簡體   English   中英

在eclipse中創建一個包含外部庫(OpenCV)的jar文件

[英]Create a jar file including an external library (OpenCV) in eclipse

我正在嘗試在Mac上創建我的應用程序的可執行jar,它使用OpenCV中的功能。 但是,當我嘗試在eclipse中創建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)

我認為該錯誤是因為存在一個.dylib文件,該文件鏈接到OpenCV jar並沒有與之打包。

我發現了這個問題 ,這似乎與我遇到的問題相同,但是該解決方案對我不起作用。 這是我所做的:

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)

您需要打印完整的堆棧跟蹤,不清楚NPE來自何處。 ImageGUI.class.getResourceAsStream最有可能返回null。 如果這是真的,那是正確的,因為path錯誤或lib不在jar中

您可以嘗試將本機OpenCV DLL文件放在JRE的bin目錄下。 至少對我有用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM