2017-12-01 23 views
0

javah 도구를 사용하여 명령 줄에서 외부 도구 구성을 사용하여 Windows 7 OS에서 eclipse에 대한 헤더 파일을 만들려고하는데, 항상 실패하고 있습니다. .Javah 도구 오류 : HelloWorld에 대한 클래스 파일을 찾을 수 없습니다.

내 코드입니다 : 나는 다른 방법을 따라도 오라클에서 javah의 도구의 문서를 읽을 수 있지만,이 문제를 극복하는 데 도움이되지 않은 한

package mypackage; 
public class HelloWorld { 
    private static String HelloWorld; 
    private native void print(); 
    static { 
     System.loadLibrary(HelloWorld); 
    } 
    public static void main(String[] args) 
    { 
     new HelloWorld().print(); 
    } 
} 

.

내 클래스 파일 (HelloWorld.class)와 자바 파일 (HelloWorld.java) 모두에서 C:\..\eclipse-workspace\Distribution System Process\src\mypackage

하지만 도구를 javah의 실행 때마다 나에게 오류 제공 :

could not find class file for HelloWorld or mypackage.HelloWorld 

I에 의해 시도를 클래스 패스도 제공하지만 헤더 파일은 가져 오지 않습니다.

참고 : 내 패키지에는 두 개의 클래스가 있습니다. Frame1.java는 Gui 인 메인 클래스이고 다른 클래스는 JNI를 위해 사용되고 HelloWorld.Java라고 불린다. 나는 수업이 문제가 확실하지 오전하지만 난 현재 헤더 파일 생성 HelloWorld.java 작업입니다 :

screen shot of my project

내가 뭔가를 실패하는 것이 잘못된 일을하고 무엇을? . :(

+0

'javah' 명령 줄은 어떻게 생겼습니까? 당신은'... \ eclipse-workspace \ Distribution System Process \ bin' 디렉토리 ('... \ src'가 아니라'... \ src \ mypackage'가 아니라'... \ bin '이 아닌)로 변경해야합니다 \ mypackage') 호출 한 다음'javah -jni mypackage.HelloWorld'를 호출하십시오. – howlger

답변

0

javah 도구가 컴파일 된 코드에 대한 액세스가 필요하기 당신은 당신의 컴파일 된 클래스가 장소를 제공해야

매우 간단한 샘플 코드 여기를보세요 :.

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

을 보시다시피 소스가 컴파일되어 다른 장소에 저장됩니다 (여기서는 target이라고합니다).

${JAVA_HOME}/bin/javac -d target java/recipeNo001/HelloWorld.java 
${JAVA_HOME}/bin/javah -jni -d c -cp target recipeNo001.HelloWorld 

그런 다음 javah (여기서 Java 클래스로 컴파일 됨)을 찾아야합니다. 인수는 -cp입니다.

인수 -d, 다른 한편으로는, javah 어디 C 헤더를 저장하기 위해 말할 것이다.