2016-11-29 7 views
2

내 프로젝트를 실행하려고하는데이 예외가 있으며 다음에 수행 할 작업을 모릅니다.예외 UnsatisfiedLinkError

세부 정보 :이 프로젝트에서 lib.jar를 사용해야하지만이 JAR 파일에는 .so 파일이 필요합니다.

편집

OpenJDK Server VM warning: You have loaded library /home/david/Retina/ReconocimientoRetina/sdk/libIddk2000jni.so which might have disabled stack guard. The VM will try to fix the stack guard now. 
It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'. 
java.lang.UnsatisfiedLinkError: /home/david/Retina/ReconocimientoRetina/sdk/libIddk2000jni.so: libIddk2000.so: no se puede abrir el archivo del objeto compartido: No existe el archivo o el directorio 
    at java.lang.ClassLoader$NativeLibrary.load(Native Method) 
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941) 
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824) 
    at java.lang.Runtime.load0(Runtime.java:809) 
    at java.lang.System.load(System.java:1086) 
    at com.iritech.iddk.standard.Iddk2000Apis.<clinit>(Iddk2000Apis.java:221) 
    at com.iritech.demo.functionCapture.open_device(functionCapture.java:1222) 
    at com.iritech.demo.Iddk2000Main.getIris(Iddk2000Main.java:39) 
    at com.iritech.demo.Iddk2000Main.main(Iddk2000Main.java:30) 
Exception in thread "main" java.lang.UnsatisfiedLinkError: com.iritech.iddk.standard.Iddk2000Apis.getIddkConfigNative(Lcom/iritech/iddk/standard/IddkConfig;)I 
    at com.iritech.iddk.standard.Iddk2000Apis.getIddkConfigNative(Native Method) 
    at com.iritech.iddk.standard.Iddk2000Apis.getSdkConfig(Iddk2000Apis.java:246) 
    at com.iritech.demo.functionCapture.open_device(functionCapture.java:1225) 
    at com.iritech.demo.Iddk2000Main.getIris(Iddk2000Main.java:39) 
    at com.iritech.demo.Iddk2000Main.main(Iddk2000Main.java:30) 

내 라이브러리

나는 GNU/리눅스 (우분투 64 비트) enter image description here

편집

afte이 r 검색에 대한 답변이 링크가있는 것 같습니다. "VM 인수"에 인수가 필요하지만 그 이유는 무엇입니까?

나는/ReconocimientoRetina/SDK/files.so

enter image description here

+0

PATH에'.so' 파일이 있습니까? –

+0

예 @DanW, 나는 라이브러리를 만들고이 jar에 파일 jar를 추가하여 기본 라이브러리를 추가합니다. –

+0

네이티브 라이브러리가 다른 HW 아키텍처 "cabecera ELF inválida (가능한 원인 : 엔디안 불일치)"용으로 컴파일 된 것처럼 보입니다. – Henry

답변

0

솔루션 폴더 작업 공간에서 프로젝트에 네이티브 라이브러리를 가지고있다.

나는이 처음

을 steaps 사용하여 내 문제를 해결

1 추가 캐시 재 구축이

열기는 sudo로 /etc/ld.so.conf 새로운 라인을 추가 LD_LIBRARY_PATH

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/foobar/lib 

에 라이브러리 디렉토리. 이 경우, 우리는 캐시를 다시 /opt/foobar/lib.

3을 다시 실행 ldconfig를 추가 :

sudo ldconfig 

4 확인 공유 ​​라이브러리 캐시 이제 새 디렉토리에서 공유 라이브러리가 포함되어있는 경우 :

ldconfig -p 

대한 자세한 내용이 자습서를 참조 https://codeyarns.com/2014/01/14/how-to-add-library-directory-to-ldconfig-cache/

enter image description here