注意:使用的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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)