jni開発プロセスのまとめ

2682 ワード

1、ローカルメソッド付きjavaクラスを書く
class HelloWorld {

     private native void print();

     public static void main(String[] args) {

         new HelloWorld().print();

     }

     static {

         System.loadLibrary("HelloWorld");

     }

 }

2、このjavaクラスをコンパイルする
javac HelloWorld.java

その後、HelloWorldが生成されます.classファイル.
3、ローカルメソッドヘッダファイルの作成
Javahツールを使用してJNIスタイルのヘッダファイルHelloWorldを作成します.h.
javah -jni HelloWorld

このヘッダファイルを生成する方法は
 JNIEXPORT void JNICALL 

 Java_HelloWorld_print (JNIEnv *, jobject);

この方法は2つのパラメータを含み,1つ目は環境変数,2つ目はHelloWorldクラス自体である.
4、ローカル方法の実現
生成されたヘッダファイルに基づいて、ローカルメソッドファイルHelloWorldを書きます.c.
 #include <jni.h>

 #include <stdio.h>

 #include "HelloWorld.h"

 

 JNIEXPORT void JNICALL 

 Java_HelloWorld_print(JNIEnv *env, jobject obj)

 {

     printf("Hello World!
"); return; }

5、Cファイルのコンパイル、ローカルライブラリの作成
6、プログラムを実行する
注意:ローカルライブラリへのパスを設定する必要があります.そうしないと、次のエラーが発生します.
java.lang.UnsatisfiedLinkError: no HelloWorld in library path

         at java.lang.Runtime.loadLibrary(Runtime.java)

         at java.lang.System.loadLibrary(System.java)

         at HelloWorld.main(HelloWorld.java)