获取错误:java.lang.UnsatisfiedLinkError:本机库C:\ opencv \ build \ java \ x64 \ opencv_java300.dll

时间:2016-01-04 06:10:46

标签: java opencv servlets

我正在运行一个servlet程序来使用opencv读取图像,
得到错误:

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.

我只在servlet中加载了System.loadLibrary ( Core.NATIVE_LIBRARY_NAME ) ;

任何人都可以建议如何卸载它的解决方案。还有人知道如何使用java中的opencv从浏览器中读取图像。

1 个答案:

答案 0 :(得分:0)

这是因为库不在系统路径中,需要先将其添加到系统路径中,然后再加载。首先将OpenCV提取到C驱动器,如此c:\opencv\...,然后在初始化期间使用下面的代码,它将自动在Windows环境中加载OpenCV lib。

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。