注意:使用的ide是idea,如果没有ide可以手动创建一个Java类
1、先创建一个基本的java项目(如图:Javajni)
2、创建一个简单的Java类,如上图所示com.JNIStudy,其内容编写如下
package com;
public class JNIStudy {
static {
System.load("/home/jhc/javaJNI/javajni/src/libjniStudy.so");
}
public native static int get();
public native static void set(int i);
public static void main(String[] args) {
JNIStudy test = new JNIStudy();
test.set(10);
System.out.println(test.get());
}
}
3、Java类创建并编写完成(System.load("/home/jhc/javaJNI/javajni/src/libjniStudy.so"))中的路径是动态链接库的路径,可以根据动态库的位置进行调整。进入com.JNIStudy.java的文件位置,进行手动编译Java文件
javac JNIStudy.java
4、返回到上一级目录中,在该目录中执行javah com.JNIStudy,生成com_JNIStudy.h文件
javah com.JNIStudy
5、在该目录创建JNIStudy.c文件并编写相关代码
#include "com_JNIStudy.h"
int data = 0;
JNIEXPORT jint JNICALL Java_com_JNIStudy_get(JNIEnv *env, jclass jc)
{
return data;
}
JNIEXPORT void JNICALL Java_com_JNIStudy_set(JNIEnv *env, jclass jc, jint ji)
{
data = ji;
}
6、在该目录打开控制台执行命令gcc -fPIC -D_REENTRANT -I /home/jhc/jdk/jdk1.8.0_311/include -I /home/jhc/jdk/jdk1.8.0_311/include/linux -c JNIStudy.c生成JNIStudy.o文件
gcc -fPIC -D_REENTRANT -I /home/jhc/jdk/jdk1.8.0_311/include -I /home/jhc/jdk/jdk1.8.0_311/include/linux -c JNIStudy.c
7、执行命令gcc -shared JNIStudy.o -o libjniStudy.so生成libjniStudy.so文件
8、返回到Java文件调整System.load("/home/jhc/javaJNI/javajni/src/libjniStudy.so")的动态库路径,执行main方法OK



