2017-10-07 5 views
0

jni (자바 원시 인터페이스)를 사용하는 방법을 배우고 있으며 블로그에서 제시하는 단계를 수행합니다. 나는, 내용 다음과 같은 'HelloWorld.java'라는 이름의 자바 파일을 만든 : 명령어 java -jni HelloWorld를 사용할 때 문제가 발생합니다.

public class HelloWorld { 
    public native void displayHelloWorld(); 
    static { 
     System.loadLibrary("HelloWorldImpl"); 
    } 
    public static void main(String[] args) 
    { 
    // TODO Auto-generated method stub 
     HelloWorld helloWorld = new HelloWorld(); 
     helloWorld.displayHelloWorld(); 
    } 
} 

다음 내가이 명령을 실행

javac HelloWorld 

이 오류가 발생하지 않습니다,하지만이 명령을 실행할 때 :

can't find class "HelloWorld" 
:
javah -jni HelloWorld 

후 나는 오류

이 디렉토리에는 컴파일 된 HelloWorld.class 파일이 있습니다.

dev에 : 나는 오랜 시간 동안 구글이와 같은 단계를 사용하여 성공적으로 반 친구들을 요구하지만,이 문제를 해결 할 수

jdk8 
windows 10 64bits 

가 뭔가 내 노트북의 잘못? 누구든지 나를 도울 수 있습니까?

+0

'HelloWorld'는 어떤 패키지에 위치해 있습니까? – Mureinik

+0

패키지가없고 단순한 디렉토리이고 현재 디렉토리에서 cmd를 실행하십시오 –

+0

'. \ HelloWorld.class' 파일이 있는지 확인했습니다. 당신은'javah -jni -cp를 시도 했습니까? HelloWorld'? –

답변

1

먼저 패키지를 사용해야합니다. 필수는 아니지만 일을 단순화합니다. 당신이 당신의 자바 코드를 컴파일 한 후

다음, 확인을 사용할 수 있도록 : 당신은 양자 택일

javah -jni -d c -cp . HelloWorld 
# -d c  -> header files will be created inside directory called "c" 

가 나는 또한 클래스를 컴파일하는 게 좋을 것 어떤 위치에있는 헤더 파일을 만들 수 있습니다

javah -jni -cp . HelloWorld 

어떤 하위 디렉토리에도 입력하십시오 :

javac -d target HelloWorld.java 
# compiled classes will be inside "target" dir 
# then, you can call javah this way 
javah -jni -d c -cp target HelloWorld 

코드 :

http://jnicookbook.owsiak.org/recipe-No-001/

가 JNI으로 즐기고!