我正在运行一个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从浏览器中读取图像。
答案 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。