我在這裏擊敗我的頭撞牆。有很多非常類似的問題,但沒有一個確切點。我相信答案正在我的臉上。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