java自定义native方法JNI

1、文件准备

1.1 百度网盘下载

下载连接:https://pan.baidu.com/s/1ycAEGGvHMKfE6f__pf6Q8g
提取码:po6z
安装Dev-C++,可编译c或c++文件为dll,通过其他方式编译也可以,该编辑器较小,方便。

1.2 java代码

计算两个整数相乘

package com.wit.ctw;

public class NativeJni {

    private static native int multiply(int a,int b);

    static{
        System.loadLibrary("NativeJni");
    }

    public static void main(String[] args) {
        System.out.println("invoke native function, 5 * 8 = " + multiply(5, 8));
    }
}

2、命令行操作

2.1 生成class文件

javac NativeJni.java -d ./

执行完成,可以在当前路径看到一个com文件夹,最里层是NativeJni.class文件

2.2 生成头文件

javah -classpath ./ -d ./ com.wit.ctw.NativeJni

其中com.wit.ctw.NativeJni为本地方法所在类的类全限定名,执行完成,可以在当前路径看到com_wit_ctw_NativeJni.h文件。

2.3 通过c文件生成dll文件
2.3.1 创建Dev-C++项目

创建步骤,如下图所示
在这里插入图片描述

2.3.2 修改头文件

创建完成后,项目下会有两个文件dllmain.c、dll.h文件
把刚才生成的com_wit_ctw_NativeJni.h文件内容拷贝至dll.h文件,完成覆盖,并保存重命名为com_wit_ctw_NativeJni.h
在这里插入图片描述

2.3.3 修改源文件

修改dllmain.c文件内容,注意include的文件,改为com_wit_ctw_NativeJni.h,并在方法体内实现具体逻辑,修改完成,保存重命名为NativeJni.c
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191015124419934.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI1ODYzOTcz,size_16,color_FFFFFF,t_70

2.3.4 生成dll文件

点击运行,即可生成dll文件
在这里插入图片描述

2.3.5 问题解决

如果运行时提示jni.h、jni_md.h文件找不到,可将jdk(根据文件名搜索即可)下的相应文件拷贝至Dev-C++程序的MinGW64\include目录下,再完成编译。运行成功后,目录下会多一个dll文件。目录结构如下
在这里插入图片描述

2.3 运行java程序
2.3.1 放在当前目录运行java程序

将NativeJni.dll文件拷贝至NativeJni.java文件同级目录,java同级目录文件如下图所示
在这里插入图片描述
在当前目录下实行一下命令:

java -Djava.library.path=./ com.wit.ctw.NativeJni

在这里插入图片描述

2.3.1 放在动态库中运行java程序

在这里插入图片描述
在这里插入图片描述

git项目代码

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值