2016-12-04 83 views
1

我在这里击败我的头撞墙。有很多非常类似的问题,但没有一个确切点。我相信答案正在我的脸上。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 

在此先感谢

+0

看起来像在树莓上运行openCV需要本地库。快速谷歌搜索向我展示了这个主题,这可能是你需要的:https://www.raspberrypi.org/forums/viewtopic.php?f=81&t=108749 – Sergi

+0

我不是故意隐瞒它,但这些是各种谷歌的结果,让我打我的头撞墙。我很抱歉,如果我只是没有得到它。这篇文章需要我删除我所拥有的opencv 3.1安装,复制第三方预编译的二进制文件。我相信你在寻找本地库,我可以找到jni.h,从命令行尝试-cp到该目录。不用找了。 –

+0

我不确定你是否正确设置了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

回答

1

我不确定您是否正确设置java.library.path,因为在您的起始帖子中,它是不正确的,请尝试使用它如下:java -Djava.library.path=/usr/local/share/OpenCV/java -jar HelloEx.jar,你也可以检查它是否设置正确地在你的java代码中添加下面的代码(只是为了调试):System.out.println(System.getProperty("java.library.path"));