一、确保安装了JDK环境
输入以下命令检查
java javac
二、 软件版本
- JDK8
- OS: Windows10
三、编写java文件
编写JniHelloWorld.java
文件
package cn.hangtian.com.modular.web.utils; public class JniHelloWorld { /** * native关键字,表明这个方法使用java以外的语言实现 */ public native void printHelloWorld(String something); static { //System.loadLibrary("hello")这句代码,它是在静态初始化块中定义的,系统用来装载hello库, //这就是我们在后面生成的hello.dll System.loadLibrary("hello"); } public static void main(String[] args) { //运行后,控制台打印出 hello world new JniHelloWorld().printHelloWorld("hello world"); } }
四、编译java文件
javac -encoding utf-8 JniHelloWorld.java
生成对应的字节码文件,目录根据包名自动生成,如下图所示。
五、生成头文件
javah -o JniHelloWorld.h -jni -classpath . cn.hangtian.com.modular.web.utils.JniHelloWorld
javah -o JniHelloWorld.h -jni -classpath . cn.hangtian.com.modular.web.utils.JniHelloWorld
可以指定生成的头文件的名字,也可以去掉-o属性,这样就会自动生成如下格式的头文件。
cn_hangtian_com_modular_web_utils_JniHelloWorld.h
生成的文件内容为:
/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class cn_hangtian_com_modular_web_utils_JniHelloWorld */ #ifndef _Included_cn_hangtian_com_modular_web_utils_JniHelloWorld #define _Included_cn_hangtian_com_modular_web_utils_JniHelloWorld #ifdef __cplusplus extern "C" { #endif /* * Class: cn_hangtian_com_modular_web_utils_JniHelloWorld * Method: printHelloWorld * Signature: (Ljava/lang/String;)V */ JNIEXPORT void JNICALL Java_cn_hangtian_com_modular_web_utils_JniHelloWorld_printHelloWorld (JNIEnv *, jobject, jstring); #ifdef __cplusplus } #endif #endif