您的位置:首页 > 其它

Ubuntu下JNI的简单使用

2011-02-26 22:34 393 查看
1、创建一个java文件(HelloWorld.java)。

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

}


2、使用javac命令编译该java文件,在终端输入"javac HelloWorld.java"。生成HelloWorld.class.

3、使用javah命令生成头文件。在终端输入"javah -jni HelloWorld", 生成HelloWorld.h





4、使用本地方法实现头文件中的方法。

#include <jni.h>
#include <stdio.h>
#include "HelloWorld.h"
JNIEXPORT void JNICALL Java_HelloWorld_print
(JNIEnv *env, jobject obj)
{
printf("HelloWorld JNI!/n");
return;
}


5、用gcc编译生成so文件。

gcc -shared -I /home/xl/java/jdk1.5.0_22/include -I /home/xl/java/jdk1.5.0_22/include/linux HelloWorld.c -o libHelloWorld.so



解释一下: -I <dir> 的意思是HelloWorld.c中使用#include<jni.h>, gcc默认目录是"/usr/include",如果使用#include<jni.h>则找不到jni.h文件,因此要通过“-I <dir>”参数来指 定包含的头文件jni.h的位置。

6、运行。

在终端输入java HelloWorld.

7、这时你会发现出问题了



这时java文件中loadlib时找不到这个so导致的,我们这样来运行:"java -Djava.library.path=. HelloWorld",通过设置java.library.path来找到这个so。



好了,到此为止,一个简单的HelloWorld就完成了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: