我試圖在Mac上使用OpenCV中的函數創建我的應用程序的可執行jar。然而,當我試圖在Eclipse中創建的jar我得到這個錯誤:在eclipse中創建一個包含外部庫(OpenCV)的jar文件
Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv_java248 in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1886)
at java.lang.Runtime.loadLibrary0(Runtime.java:849)
at java.lang.System.loadLibrary(System.java:1088)
at imageRegistration.ImageGUI.main(ImageGUI.java:643)
我認爲錯誤是因爲有鏈接到OpenCV的罐子並沒有被打包與它名爲.dylib文件。
我找到了this,這似乎是我遇到的同樣的問題,但該解決方案對我無效。這是我做了什麼:
public static void libLoad(){
try{
InputStream in = ImageGUI.class.getResourceAsStream("/lib/opencv-2.4.8 MAC/build/lib/libopencv_java248.dylib");
File fileOut = File.createTempFile("lib", ".dylib");
OutputStream out = FileUtils.openOutputStream(fileOut);
IOUtils.copy(in, out);
in.close();
out.close();
System.load(fileOut.toString());
} catch(Exception e) {
System.out.println("Failed to load opencv native library \n" + e);
}
}
我得到的錯誤,當我運行是這樣的:
Failed to load opencv native library
java.lang.NullPointerException
編輯:以下是完整的堆棧跟蹤:
java.lang.NullPointerException
at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1792)
at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1769)
at org.apache.commons.io.IOUtils.copy(IOUtils.java:1744)
at imageRegistration.ImageGUI.libLoad(ImageGUI.java:624)
at imageRegistration.ImageGUI.main(ImageGUI.java:643)
好吧,我已經用堆棧跟蹤更新了問題。 – user2916314
目前我正在添加jar,然後將.dylib文件添加到本機庫路徑。 lib會在jar嗎? – user2916314
嘗試System.load(fileOut.getAbsolutePath()); –