栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Linux下Java JNI使用Demo

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/613612.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号