本文主要讲述如何在Mac开发环境下进行JNI开发。
首先编写好Java文件,示例程序主要示范了Java访问C,C访问Java静态与非静态域。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
在这个类的static代码块中加载的动态库是HelloJni,类库的名字前面需要加lib,在linux系统上面类库的扩展名为so,在Mac系统上面扩展名为jnilib,也就是说我们待会要生成的库的名字是libHelloJni.jnilib。
执行javac HelloJni.java生成class文件,执行javah HelloJni生成HelloJni.h头文件。其实生成的头文件都是有套路的,我们其实可以自己手动写。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | |
接下来进行c文件的编写,示例程序演示了C访问java静态与非静态域。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | |
接下来就是编译c文件了,在HelloJni.h中有#include <jni.h>,编译的时候我们需要指出jni.h的路径。在Mac系统中jni.h在/System/Library/Frameworks/JavaVM.framework/Headers目录下。
1 2 | |
上面两条命令就生成了动态库。
然后我们再执行java HelloJni就可以看到java和c交互的输出了:
1 2 3 4 5 6 | |
Demo参见HelloJni。