Java JNI

测试JNI的使用方法java

环境准备

开发环境须要Java SDK(官网下载),下载完后安装Java SDK。windows

编译使用的MinGW,64位的官网能够找到下载地址oracle

 

项目创建及代码编写

在任意地方新建一个目录,保存这个项目,而后新建一个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,内容以下:spa

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\n");
8 }

 

编译动态连接库

c源程序里引用了JDK里的一个头文件jni.h,在JDK安装目录下的include目录里,jni.h里引用了另外一JDK头文件jni_md.h,在include目录的win32目录里,因此编译时加上这两个搜索地址.net

gcc -Wall -shared -I"D:\Program Files\Java\jdk1.8.0_91\include" -I"D:\Program Files\Java\jdk1.8.0_91\include\win32" -o jt.dll jni.c

这时,项目目录下就会生成一个jt.dll文件code

 

运行结果

下面就能够执行class文件,查看结果了。blog

java test.jni.JniTest

正常状况下,会在控制台输出开发

test jnifrom c

相关文章
相关标签/搜索