저는 JNI의 초보자입니다. JNI 튜토리얼에 대한 소개는 Hello World를 인쇄하기 위해 원시를 호출하기 전에 시도한 것입니다! 모든 것은 내가 자바 파일을 실행하고 싶을 때까지 계속되었다. 예외는 "main"이라는 스레드에서 예외가 발생했다. java.lang.UnsatisfiedLinkError : java.library.path에 hello 라이브러리가 없다. 나는 그 오류를 봤는데 많은 사람들의 제안을 보았지만 아무도 나를 위해 불행하게도 일하지 않았다! 내 .so를 경로 java.library.path에 라이브러리가 없습니다.
모두에 LD_LIBRARY_PATH를 설정하여 HelloWorld
- 명령을 실행 : 나는 다음을 시도 위의 두 가지 중 하나를 수행 한 후에 다른 문제가 해결되었지만 나 아닌! 여기 는 자바 코드입니다 :
void JNICALL Java_printHelloWorld(JNIEnv *env, jobject obj) { printf("HelloWorld!"); }
편집 : : 난 java.library.path의 실제 디렉토리에 라이브러리를 복사하려고 다음과 같이 기본에 대한
public class HelloWorld { static { System.loadLibrary("hello"); } private native void printHelloWorld(); public static void main(String[] args) { new HelloWorld().printHelloWorld(); } }
그리고 코드는 ,하지만 그것은 여전히 나에게 같은 오류를주고있어!
네이티브 부분과 Java 부분 모두에 대해 전체 코드를 보여주십시오. – merlin2011
java.library.path 및 LD_LIBRARY_PATH는 .so 파일이 들어있는 _directories_를 가리켜 야하며 파일은 표시되지 않습니다. – bmargulies
네 임 그 – sasfour