2014-04-05 2 views
2

저는 JNI의 초보자입니다. JNI 튜토리얼에 대한 소개는 Hello World를 인쇄하기 위해 원시를 호출하기 전에 시도한 것입니다! 모든 것은 내가 자바 파일을 실행하고 싶을 때까지 계속되었다. 예외는 "main"이라는 스레드에서 예외가 발생했다. java.lang.UnsatisfiedLinkError : java.library.path에 hello 라이브러리가 없다. 나는 그 오류를 봤는데 많은 사람들의 제안을 보았지만 아무도 나를 위해 불행하게도 일하지 않았다! 내 .so를 경로 java.library.path에 라이브러리가 없습니다.

모두에 LD_LIBRARY_PATH를 설정하여 HelloWorld

  • 자바 -Djava.library.path = "라이브러리-경로":

    • 명령을 실행 : 나는 다음을 시도 위의 두 가지 중 하나를 수행 한 후에 다른 문제가 해결되었지만 나 아닌! 여기

      는 자바 코드입니다 :

      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(); 
          } 
      } 
      

      그리고 코드는 ,하지만 그것은 여전히 ​​나에게 같은 오류를주고있어!

  • +0

    네이티브 부분과 Java 부분 모두에 대해 전체 코드를 보여주십시오. – merlin2011

    +1

    java.library.path 및 LD_LIBRARY_PATH는 .so 파일이 들어있는 _directories_를 가리켜 야하며 파일은 표시되지 않습니다. – bmargulies

    +0

    네 임 그 – sasfour

    답변

    3

    라이브러리 란 무엇입니까? 경로가 맞으면 라이브러리 이름이 잘못되었을 수 있습니다. Windows에서 파일을 hello.dll, OS X (Java < 1.7) libhello.jnilib, OS X (Java> = 1.7) libhello.dylib 등으로 지정해야하며 나머지는 모두 libhello.so입니다. Windows dll 파일은 "lib"접두사가없는 유일한 파일 이름이고 System.loadLibrary("hello")을 호출 할 때는 "lib"접두사가 사용되지 않습니다. lib를로드하는 중에도 여전히 문제가 발생하면 System.load("/path/to/my/libhello.so")을 시도하여 라이브러리를 직접로드하십시오.

    +0

    힌트를 알고있는 사람은 맥 OS X 10.9 매버릭스와 인 IntelliJ를 사용하는 경우 : 설치 사제 '$ 양조와 OpenCV의 설치 가 OpenCV의 추가 --with-java' 사제/과학/OpenCV의 (글로벌) 라이브러리 : '/ usr/local/Cellar/opencv/2.4.9/share/OpenCV/java' 편집 실행 설정 (VM 옵션) : '-Djava.library.path =/usr/local/Cellar/opencv/2.4.9/share/OpenCV/java' 아직도 오류가 있습니까? 스레드 "주요"에서 java.lang.UnsatisfiedLinkError의 '예외 : java.library.path' 체크 Java 버전에없는 opencv_java249 : '$ 자바 -version 자바 버전 "1.6.0_65"' 해결 방법 : 업그레이드 Java SDK – Matt

    관련 문제