Java와 JNI에서 Matlab을 사용하여, 내가 추측 할 수없는 UnsatisfiedLinkError를 얻었습니다.Matlab + Java + JNI : java.lang.UnsatisfiedLinkError
먼저 Matlab 명령 줄에서 기본 라이브러리를로드합니다. 그것은 작동 : 다음
>> java.lang.System.load('/usr/local/share/OpenCV/java/libopencv_java.so')
내가 네이티브 라이브러리로 구현 된 자바 함수를 호출 :
>> org.opencv.core.Mat
Java exception occurred:
java.lang.UnsatisfiedLinkError: org.opencv.core.Mat.n_Mat()J
at org.opencv.core.Mat.n_Mat(Native Method)
at org.opencv.core.Mat.<init>(Mat.java:441)
이 org.opencv.core.Mat.n_Mat() J를 찾을 수없는 불평을하지만, 그 이유는 UnsatisifiedLinkError를 얻고, 올바른 기호 네이티브 라이브러리를로드 않다면
[email protected]:/usr/local/share/OpenCV/java$ nm libopencv_java.so | grep Mat_n_1Mat
0000000000027780 T Java_org_opencv_core_Mat_n_1Mat__
00000000000316c0 T Java_org_opencv_core_Mat_n_1Mat__DDI
00000000000312a0 T Java_org_opencv_core_Mat_n_1Mat__DDIDDDD
00000000000318a0 T Java_org_opencv_core_Mat_n_1Mat__III
00000000000314b0 T Java_org_opencv_core_Mat_n_1Mat__IIIDDDD
0000000000030fa0 T Java_org_opencv_core_Mat_n_1Mat__JII
0000000000031120 T Java_org_opencv_core_Mat_n_1Mat__JIIII
그래서 : 그 기호는 .so를에?
VM에서 jni 디버그 출력을 활성화 할 수 있는지 확인하십시오. REPL은 각 새 명령에 대해 새로운 클래스 로더 (또는 기타 컨텍스트)를 사용하므로 공유 라이브러리가 언로드 될 수 있습니다. – technomage