2016-01-04 26 views
0

我运行一个Servlet程序使用OpenCV的读取图像,
收到错误:收到错误:java.lang.UnsatisfiedLinkError中:本地库C: OpenCV的建设 java的 64 opencv_java300.dll

java.lang.UnsatisfiedLinkError: Native Library C:\opencv\build\java\x64\opencv_java300.dll already loaded in another classloader . When restarting the IDE it works fine. 

我加载System.loadLibrary (Core.NATIVE_LIBRARY_NAME) ;在servlet只有一个。

任何人都可以提出一个解决方案,如何卸载它。而且任何人都知道如何使用java中的opencv从浏览器读取图像。?

回答

0

这是因为库不在系统路径中,它需要先添加到系统路径,然后加载。首先将OpenCV提取到C盘,如下所示c:\opencv\...然后在初始化过程中使用下面的代码,它会自动加载OpenCV库在Windows环境中。

public static void loadOpenCV_Lib() throws Exception { 
    String model = System.getProperty("sun.arch.data.model"); 
    String libraryPath = "C:/opencv/build/java/x86/"; 
    if(model.equals("64")) { 
     libraryPath = "C:/opencv/build/java/x64/"; 
    } 
    System.setProperty("java.library.path", libraryPath); 
    Field sysPath = ClassLoader.class.getDeclaredField("sys_paths"); 
    sysPath.setAccessible(true); 
    sysPath.set(null, null); 
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME); 
} 

而且它会自动检测系统模型并根据系统模型加载lib。

+0

我已按照您的建议将此代码添加到我的init()方法中。但是当我运行它时,显示错误:java.lang.UnsatisfiedLinkError:本机库C:\ opencv \ build \ java \ x64 \ opencv_java300.dll已经加载到另一个类加载器中。当我重新启动IDE时,它无需编辑即可正常工作。你能给出这个错误的建议吗? – alduaa

+0

你知道如何使用java中的opencv从浏览器中读取图像吗? – alduaa

+0

你正在使用什么IDE? –

相关问题