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
相关文章
|
6天前
|
存储 Java C++
[NDK/JNI系列02] JNI的设计原理与数据类型
[NDK/JNI系列02] JNI的设计原理与数据类型
9 0
[NDK/JNI系列02] JNI的设计原理与数据类型
|
4月前
函数库头文件问题
函数库头文件问题
|
9月前
|
IDE 编译器 程序员
深入理解C程序的#include和头文件,让c工程只有.h文件(狗头)
深入理解C程序的#include和头文件,让c工程只有.h文件(狗头)
237 0
|
Java Android开发 iOS开发
|
Java Unix Linux
JNI学习(0)——关于JNI
JNI学习(0)——关于JNI
110 0
JNI学习(0)——关于JNI
|
IDE Java 开发工具
JNI学习(2)——生成动态链接.dll文件
JNI学习(2)——生成动态链接.dll文件
119 0
JNI学习(2)——生成动态链接.dll文件
|
编译器 C++ 开发者
头文件.h、动态链接库.dll、静态链接库.lib的区别与应用总结
头文件.h、动态链接库.dll、静态链接库.lib的区别与应用总结
811 0
头文件.h、动态链接库.dll、静态链接库.lib的区别与应用总结
|
Android开发 Java C语言
javah生成头文件
编写native方法,如: package com.example.renzhenming.appmarket.ui.selectimage; import android.
1169 0
|
Java C语言 Windows