JNI HelloWorld簡単記録
1723 ワード
JNIを使って、復習しなければなりません.
馬に乗る:
ファイルのコンパイル
ヘッダファイルの生成
Cコードの作成:
クラスライブラリファイルの生成
2つの-Iオプションがあります.この2つのオプションのプロパティ値はそれぞれ
表示,jni.h jni_md.hが存在するパスは、クラスライブラリlibhelloを得ることができます.so
このクラスライブラリをjavaに配置します.library.パスの中でよかったのですが、
java.library.pathの取得は
私は/usr/libを使っています.
cp libhello.so/usr/lib
HelloWorldの実行
ps:
1、この過程で出会ったjni.h jni_md.h見つからない問題は、グーグルで簡単に解決策を見つけました.ここでグーグルに感謝します.
2、私のシステムのバージョンは:
<全文完了>
馬に乗る:
public class HelloWorld{
public native void sayHi();
static {
System.loadLibrary("hello");
}
public static void main(String args[]){
new HelloWorld().sayHi();
}
}
ファイルのコンパイル
javac HelloWorld.java
ヘッダファイルの生成
javah -jni HelloWorld
Cコードの作成:
#include "HelloWorld.h"
#include <stdio.h>
JNIEXPORT void JNICALL Java_HelloWorld_sayHi (JNIEnv *env, jobject object)
{
printf("Hello World!
");
return;
}
クラスライブラリファイルの生成
gcc -shared -fpic -I/usr/lib/jvm/java-1.6.0-openjdk/include -I/usr/lib/jvm/java-1.6.0-openjdk/include/linux -o libhello.so HelloWorld.c
2つの-Iオプションがあります.この2つのオプションのプロパティ値はそれぞれ
/usr/lib/jvm/java-1.6.0-openjdk/include
および/usr/lib/jvm/java-1.6.0-openjdk/include/linux
表示,jni.h jni_md.hが存在するパスは、クラスライブラリlibhelloを得ることができます.so
このクラスライブラリをjavaに配置します.library.パスの中でよかったのですが、
java.library.pathの取得は
String libPath = System.getProperty("java.library.path");
で取得します.私は/usr/libを使っています.
cp libhello.so/usr/lib
HelloWorldの実行
java HelloWorld
ps:
1、この過程で出会ったjni.h jni_md.h見つからない問題は、グーグルで簡単に解決策を見つけました.ここでグーグルに感謝します.
2、私のシステムのバージョンは:
Linux version 2.6.35.6-45.fc14.i686 ([email protected]) (gcc version 4.5.1 20100924 (Red Hat 4.5.1-4) (GCC) ) #1 SMP Mon Oct 18 23:56:17 UTC 2010
<全文完了>