2017-10-07 11 views
0

jni(Javaネイティブインターフェイス)の使い方を学んでいます。私は、次のようにコンテンツを「HelloWorld.java」という名前の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 

そこにはエラーが起こっていないが、私は、このコマンドを実行するときです:

javah -jni HelloWorld 

その後、私はエラーを取得する:

can't find class "HelloWorld" 

確かに、このディレクトリにはコンパイルされたHelloWorld.classファイルがあります。

DEV:

jdk8 
windows 10 64bits 

私は長い時間のためにグーグルを持ち、同じ手順を使用して成功しているが、この問題に対処することはできません、私のクラスメートを尋ね、何かが私のラップトップに間違っていましたか? 誰かが私を助けることができましたか?ありがとうございました。

+0

'HelloWorld'はどのパッケージにありますか? – Mureinik

+0

パッケージなし、単純なディレクトリ、現在のディレクトリでcmdを実行 –

+0

ファイル '。\ HelloWorld.class'が存在することを確認しました。あなたは 'javah -jni -cpを試しましたか?こんにちは。 –

答えて

1

まず、パッケージを使用してください。必須ではありませんが、単純化しています。その後

、あなたはJavaコードをコンパイルした後、使用してください:

javah -jni -cp . HelloWorld 

あなたが代わりにいくつかの場所で

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

をヘッダファイルを作成することができます私はまた、クラスをコンパイルすることをお勧めしたいですいくつかのサブディレクトリにも入れます:

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を楽しんでいます!

関連する問題