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就完成了。
来源:oschina
链接:https://my.oschina.net/u/1024767/blog/205169