2016-12-04 74 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"));