我在这里击败我的头撞墙。有很多非常类似的问题,但没有一个确切点。我相信答案正在我的脸上。UnsatisfiedLinkError试图运行OpenCV java代码交叉编译
我正在进行我的第一次OpenCV交叉编译测试。我在Windows 10的Eclipse中设置了OpenCV 3.1.0。代码运行良好。从那里我创建了一个可执行文件.jar并将其FTP到运行Jessie的树莓派3。
我在Pi上安装了OpenCV 3.1.0,包括Java支持(第三次尝试)。但是我仍然会遇到同样的错误。
代码:
import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
public class Hello
{
public static void main(String[] args)
{
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
Mat mat = Mat.eye(3, 3, CvType.CV_8UC1);
System.out.println("mat = " + mat.dump());
}
}
错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv_java310 in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1864)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at Hello.main(Hello.java:9)
我发现OpenCV的-java310.jar在/ usr/local/share下/ OpenCV的/ JAVA
我试图在带-D参数的命令行下:
java -jar HelloEx.jar -D java.library.path=/usr/local/share/OpenCV/java
在此先感谢
看起来像在树莓上运行openCV需要本地库。快速谷歌搜索向我展示了这个主题,这可能是你需要的:https://www.raspberrypi.org/forums/viewtopic.php?f=81&t=108749 – Sergi
我不是故意隐瞒它,但这些是各种谷歌的结果,让我打我的头撞墙。我很抱歉,如果我只是没有得到它。这篇文章需要我删除我所拥有的opencv 3.1安装,复制第三方预编译的二进制文件。我相信你在寻找本地库,我可以找到jni.h,从命令行尝试-cp到该目录。不用找了。 –
我不确定你是否正确设置了java.library.path,因为在你的起始帖子中它是不正确的,请尝试按如下方式使用它:'java -Djava.library.path =/usr/local/share/OpenCV/java -jar HelloEx.jar',你也可以通过添加下面的代码来检查它是否在你的java代码中正确设置(只是为了调试):'System.out.println(System.getProperty(“java.library.path” ));'。如果它设置正确,但仍然不起作用,我会检查您的用户是否具有对库文件夹和文件的权限 – Sergi