龙哥网

龙哥网

Java基础之Linux下Java JNI使用Demo
2022-03-01

注意:使用的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;

/*
 * Class:     com_JNIStudy
 * Method:    get
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_JNIStudy_get(JNIEnv *env, jclass jc)
{
    return data;
}

/*
 * Class:     com_JNIStudy
 * Method:    set
 * Signature: (I)V
 */
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

免责声明
本站部分资源来源于互联网 如有侵权 请联系站长删除
龙哥网是优质的互联网科技创业资源_行业项目分享_网络知识引流变现方法的平台为广大网友提供学习互联网相关知识_内容变现的方法。