1. 安装java环境
yum install java-devel -y
yum install java -y
2. 编译流程
下面将介绍编写 JNI 入门教程HelloNative程序的编写, 主要的步骤为:
-
编写 HelloNative.java 程序;
-
编译并得到 HelloNative.h 头文件;
-
编写 HelloNative.c 程序;
-
编译动态链接库libHelloNative.so;
-
运行HelloNative程序。
3. 编译过程
- 编写 HelloNative.java 程序
public class HelloNative{
static{
System.loadLibrary("HelloNative");-
}
public static native void sayHello();
public static void main(String[]args){
new HelloNative().sayHello();
}
}
- 编译并得到 HelloNative.h 头文件(这里需要注意有包名的java代码,需要带上路径)
执行命令如下:
javac HelloNative.java
javah HelloNative
- 编写 HelloNative.c 程序
#include <stdio.h>
#include "HelloNative.h"
JNIEXPORT void JNICALL Java_HelloNative_sayHello(JNIEnv *env, jclass jc)-
{
printf("Hello Native\n");
}
- 编译动态链接库libHelloNative.so
动态库
gcc HelloNative.c -fPIC -shared -o libHelloNative.so -I /usr/java/jdk1.8.0_181/include/ -I /usr/java/jdk1.8.0_181/include/linux/
默认的jdk路径:
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-0.el7_6.x86_64/include/
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-0.el7_6.x86_64/include/linux/
如果生成的是静态库:需要通过指令完成:
ar -x mylib.a
g++ -shared *.o -o mylib.so -lstdc++
这里的路径可以通过locate来获取
locate jni.h
locate jni_md.h
- 运行HelloNative程序
export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
java HelloNative