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
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程序