jni开发过程总结
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);
这个方法包括两个参数,第一个是环境变量,第二个是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!\n"); 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)