Guide to JNI (Java Native Interface) | JNI(Java 原生接口)指南
1) 编写 HelloNative.java 程序;
【编写java测试类】
public class HelloNative {
static{
System.loadLibrary("HelloNative");
}
public static native void sayHello();
public static void main(String[] args){
HelloNative.sayHello();
}
}
2) 编译并得到 HelloNative.h 头文件;
【用java测试类生成C/C++头文件】
2.1 生成 HelloJNI.class
javac HelloNative.java
2.2 生成 HelloJNI.h
javah HelloNative
? javah HelloJNI 错误: 找不到 ‘HelloJNI’ 的类文件。
3) 编写 HelloNative.c 程序;
【用C/C++头文件编写C代码】
#include <stdio.h>
#include "HelloNative.h"
JNIEXPORT void JNICALL Java_HelloNative_sayHello(JNIEnv *env, jclass jc)
{
printf("Hello Native!\n");
}
4) 编译动态链接库libHelloNative.jnilib ;
【生成C/C++动态库】
gcc HelloNative.c -o libHelloNative.jnilib -dynamiclib -I/Users/suvancheng/Library/Java/JavaVirtualMachines/corretto-1.8.0_312/Contents/Home/include/ -I/Users/suvancheng/Library/Java/JavaVirtualMachines/corretto-1.8.0_312/Contents/Home/include/darwin/
5) 运行HelloNative 程序。
【调试测试JNI】
java HelloNative
参考
Mac下查看已安装的jdk版本及其安装目录 最近在学习JVM,需要运行jdk自带的命令行,需要在特定jdk目录下进行,所以需要查看jdk安装目录,之前也查过,忘记了。这次记录下来为以后备用。
1、打开终端:
/usr/libexec/java_home -V
注意:输入命令参数区分大小写(-v是不对的,必须是-V)
如图:3个红框内依次为: 输入命令; 当前Mac已安装jdk目录; Mac默认使用的jdk版本; JNI 开发流程 javah 找不到类文件的解决办法
|