测试JNI的使用方法
环境准备
开发环境需要Java SDK(官网下载),下载完后安装Java SDK。
项目建立及代码编写
在任意地方新建一个目录,保存这个项目,然后新建一个src目录,用于存放源文件。因为Java有包的概念,所以进入src目录后,根据包名的层次,依次建立相应目录,然后新建Java源程序文件,比如:
1 package test.jni; 2 3 public class JniTest { 4 5 public native void callme(); 6 7 public static void main(String[] args) { 8 System.out.println("test jni"); 9 new JniTest().callme(); 10 } 11 12 static { 13 System.loadLibrary("jt"); 14 } 15 }
编译Java代码,生成class文件。然后使用javah工具生成c语言头文件,命令如下:
javah test.jni.JniTest
这时目录下会生成一个以包名命名的.h文件,接下来新建一个c源程序jni.c,内容如下:
1 #include "jni.h" 2 #include "test_jni_JniTest.h" 3 4 JNIEXPORT void JNICALL Java_test_jni_JniTest_callme 5 (JNIEnv *jEnv, jobject o) 6 { 7 printf("from c "); 8 }
编译动态链接库
c源程序里引用了JDK里的一个头文件jni.h,在JDK安装目录下的include目录里,jni.h里引用了另一JDK头文件jni_md.h,在include目录的win32目录里,所以编译时加上这两个搜索地址
gcc -Wall -shared -I"D:Program FilesJavajdk1.8.0_91include" -I"D:Program FilesJavajdk1.8.0_91includewin32" -o jt.dll jni.c
这时,项目目录下就会生成一个jt.dll文件
运行结果
下面就可以执行class文件,查看结果了。
java test.jni.JniTest
正常情况下,会在控制台输出
test jni
from c