jni開発プロセスのまとめ
2682 ワード
1、ローカルメソッド付きjavaクラスを書く
2、このjavaクラスをコンパイルする
その後、HelloWorldが生成されます.classファイル.
3、ローカルメソッドヘッダファイルの作成
Javahツールを使用してJNIスタイルのヘッダファイルHelloWorldを作成します.h.
このヘッダファイルを生成する方法は
この方法は2つのパラメータを含み,1つ目は環境変数,2つ目はHelloWorldクラス自体である.
4、ローカル方法の実現
生成されたヘッダファイルに基づいて、ローカルメソッドファイルHelloWorldを書きます.c.
5、Cファイルのコンパイル、ローカルライブラリの作成
6、プログラムを実行する
注意:ローカルライブラリへのパスを設定する必要があります.そうしないと、次のエラーが発生します.
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)