我部署了一個Web應用程序,其中包含以下代碼。java.lang.UnsatisfiedLinkError:原生庫XXX.so已經加載到另一個類加載器
System.loadLibrary(org.opencv.core.Core.NATIVE_LIBRARY_NAME);
現在,我部署了另一個也具有相同代碼的網絡應用程序。當它試圖加載庫時,會拋出以下錯誤。
Exception in thread "Thread-143" java.lang.UnsatisfiedLinkError:
Native Library /usr/lib/jni/libopencv_java248.so already loaded in
another classloader
我想同時運行這兩個應用程序。
直到現在我曾嘗試:
- 加載庫在一個應用程序和異常上面抓進另一個應用程序
- 刪除罐子從兩個應用程序,並把opencv.jar到Tomcat的classpath中(即在/ usr /共享/ 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)
數字2應該已經工作。你確定你在別處刪除了它,並且Web應用程序中沒有其他jar試圖加載lib? – user2543253
@ user2543253請檢查我編輯的問題。 –
你可以檢查'Highgui'是否被加載了'loadLibrary'的同一個類加載器?否則,本地方法不會被初始化。 – user2543253