java.lang.UnsatisfiedLinkError:本机库 XXX.so 已经加载到另一个类加载器中
我已经部署了一个Web应用程序,其中包含以下代码。
System.loadLibrary(org.opencv.core.Core.NATIVE_LIBRARY_NAME);
现在,我部署了另一个Web应用程序,它也有相同的代码。当它尝试加载库时,它会引发以下错误。
Exception in thread "Thread-143" java.lang.UnsatisfiedLinkError:
Native Library /usr/lib/jni/libopencv_java248.so already loaded in
another classloader
我想同时运行这两个应用程序。
到目前为止,我尝试过:
- 在一个应用程序中加载库,并将上述异常捕获到另一个应用程序中
- 从两个应用程序中删除了jars,并将opencv.jar放入Tomcat的classpath中(即在/usr/share/tomcat7/lib中)。
但是以上都没有奏效,任何建议我都可以做到这一点?
编辑:对于选项二,
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
这行有效,但当我实际要使用该库时,会出现异常。那是我做以下事情的时候
Mat mat = Highgui.imread("/tmp/abc.png");
我得到了这个例外
java.lang.UnsatisfiedLinkError: org.opencv.highgui.Highgui.imread_1(Ljava/lang/String;)J
at org.opencv.highgui.Highgui.imread_1(Native Method)
at org.opencv.highgui.Highgui.imread(Highgui.java:362)