JAVA JNI实例编写
1、JN的书写步骤
- 编写带有native声明的方法的java类,生成.java文件
- 使用javac命令编译所编写的java类,生成.class文件
- 使用javah -jni java类名生成扩展名为h的头文件,也即生成.h文件
- 使用C/C++(或者其他编程想语言)实现本地方法,创建.h文件的实现,也就是创建.cpp文件实现.h文件中的方法
- 将C/C++编写的文件生成动态连接库,生成dll文件
2、JNI实例
下列是所有操作都是在目录:
为了方便可以不包括类名,这个地方测试时包括类名的ying.zhang.jni
。
3.1.编写带有native声明的方法的java类:HelloWorldJNI.java
3.3.使用javah -jni java类名生成扩展名为h的头文件
注意:这个地方要到包名外执行命令,如果在class目录下执行会报错
正确的路径和写法
E:\works\idea\study\src\ying_zhang_jni_HelloWorldJNI.h文件,该文件内容如下:
执行完上述命令以后生成
这里我们可以这样理解:这个h文件相当于我们在java里面的接口,这里声明了一个 JNICALL Java_ying_zhang_jni_HelloWorldJNI_displayHelloWorld
(JNIEnv *, jobject);;方法,然后在我们的本地方法里面实现这个方法,也就是说我们在编写C/C++程序的时候所使用的方法名必须和这里的一致
(JNIEnv *, jobject);;方法,然后在我们的本地方法里面实现这个方法,也就是说我们在编写C/C++程序的时候所使用的方法名必须和这里的一致
3.4.使用C/C++实现本地方法
将
D:\Program Files\Java\jdk1.6.0_26\include\jni.h和
D:\Program Files\Java\jdk1.6.0_26\include\win32\jni_md.h这两个文件拷贝到
E:\works\idea\study\src目录下。目录结构如下图所示:
3.7 执行
得到HelloWorldJNIImpl.dll文件
我使用的是visual studio 2010,要使用其中的cl命令,必须打开visual studio 命令行,如下图所示:
然后再命令行中输入如下命令
注意:这个是时候可能报错,如图所示
这是由于jni.h 你在.h和.app文件里面应用为<jni.h>格式,这种格式是系统引用,你现在是在同目录下面,应该改为"jni.h”这种方式
具体如下图所示:
执行完上述命令以后,我们在C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC可以看到生成的四个文件,分别是:
将其中的HelloWorldJNIImpl.dll拷贝到
目录下。
3.8.执行class得到结果
在cmd中运行: