2017-10-20 128 views
0

我用javacv庫運行我的項目後出現此錯誤。OpenCV錯誤JAVA NETBEANS

Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv_java2411 in java.library.path 
     at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867) 
     at java.lang.Runtime.loadLibrary0(Runtime.java:870) 
     at java.lang.System.loadLibrary(System.java:1122) 
     at webcam.cam.main(cam.java:181) 

回答

0

您可以使用此以下方式:

public static void loadOpenCVLib(String path) throws Exception { 
    File lib_dir = new File(path); 
    System.setProperty("java.library.path", lib_dir.getAbsolutePath()); 
    Field sys_paths = ClassLoader.class.getDeclaredField("sys_paths"); 
    sys_paths.setAccessible(true); 
    sys_paths.set(null, null); 
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME); 
    // it is for the ffmpeg name 
    String[] list = lib_dir.list(); 
    assert list != null; 
    String ffmpeg_dll_file_name = null; 
    for (String s : list) { 
     if (s.contains("ffmpeg")) { 
      ffmpeg_dll_file_name = s.substring(0, s.indexOf(".")); 
     } 
    } 
    System.loadLibrary(ffmpeg_dll_file_name); 
} 

現在建立在一些地方的文件夾並將其命名爲opencv_lib比如:內D:\opencv_lib,然後把OpenCV的DLL和ffmpeg的dll文件這個文件夾,然後當運行程序首先調用上面的方法例如:

loadOpenCVLib("D:\\opencv_lib"); 

現在它無線沒問題。

注:這將是更好的下載和使用最新版本的OpenCV

+0

同樣的錯誤,先生 –

+0

@KurtRuzell必須工作。我用了很長時間,在很多項目中,在不同的機器上沒有任何問題,所以在使用方式上可能會出現問題。該代碼只是在Java類路徑中添加dll,然後加載lib,它可以由Java VM找到。 –

+0

2017年10月20日下午8點16分十三秒webcam.cam主要 重度:空 顯示java.lang.NullPointerException \t在java.lang.Runtime.loadLibrary0(Runtime.java:866) \t在java.lang.System中.loadLibrary(System.java:1122) \t在webcam.cam.loadOpenCVLib(cam.java:62) \t在webcam.cam.main(cam.java:220) –