JNI学习(1)——生成对应的头文件

简介: JNI学习(1)——生成对应的头文件

一、确保安装了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

生成对应的字节码文件,目录根据包名自动生成,如下图所示。

image.png


五、生成头文件


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
目录
打赏
0
0
0
0
39
分享
相关文章
|
9月前
|
[NDK/JNI系列02] JNI的设计原理与数据类型
[NDK/JNI系列02] JNI的设计原理与数据类型
75 0
[NDK/JNI系列02] JNI的设计原理与数据类型
|
9月前
函数库头文件问题
函数库头文件问题
头文件
头文件。
58 2
c++ 常用头文件
c++ 常用头文件
204 0