版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/LHshooter/article/details/83443738
直接在linux运行jni调用
jni是jdk里面的工具,下面我们来试验在linux上完成jni的调用,因此在完成这个步骤必须要先完成jdk的安装,这里不做介绍
首先写出java程序
Test.java文件
public class Test{
public static native int ledOpen();
static{
System.out.println("load so library");
System.load("/home/su/java_jni/test1/Myjni.so");//这里要用绝对路径
}
public static void main(String[] args){
Test t1 = new Test();
t1.ledOpen();
}
}
通过javah生成一个Test.h文件
执行
javah -jni Test
此时我们需要实现这个Test.h对应的c文件
Myjni.c文件
#include <jni.h>
#include <stdio.h>
JNIEXPORT jint JNICALL Java_Test_ledOpen
(JNIEnv *env, jclass obj)
{
printf("hello jni\n");
return 0;
}
Myjni.c文件生成so库
gcc -fPIC -shared -o Myjni.so Myjni.c -I /usr/lib/jvm/java-7-openjdk-amd64/include -I /usr/lib/jvm/java-7-openjdk-amd64/include/linux/
其中/usr/lib/jvm/java-7-openjdk-amd64是我的jdk安装目录
这样就可以在当前目录生成对应的so库(Test.java文件加载的so库文件)
再编译前面写好的java程序
Test.java文件编译
javac Test.java
执行
java Test
结果
load so library
hello jni