在jni.java定义JNI接口
class jni {
native void hiJni(char info[]);
}
编译
javac jni.java
生成jni头文件
javah -d . jni
实现jni.c
#include <jni.h>
#include <stdio.h>
#include "jni.h"
JNIEXPORT void JNICALL Java_jni_hiJni (JNIEnv *env, jobject obj, jcharArray info)
{
printf("%s:%s\n", __func__, (char *)info);
}
编译成库
JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/
gcc -shared -I$JAVA_HOME/include -I$JAVA_HOME/include/linux jni.c -o libjni.so
java调用测试,编写Test.java
public class Test {
static {
System.loadLibrary("jni");
}public static void main(String[] args) {
new jni().hiJni(null);
}
}
编译Test.java
javac Test.java
运行验证
java -Djava.library.path=. Test