Linux下Java JNI使用Demo

Linux下Java JNI使用Demo,第1张

Linux下Java JNI使用Demo

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5619711.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存