一、创建一个使用JNI的java类
package org.example;
public class HelloJNI {
// 声明一个 native 方法
private native void sayHello();
// 加载本地库
static {
System.loadLibrary("hello"); // 库名为 hello.dll
}
// 主方法
public static void main(String[] args) {
new HelloJNI().sayHello();
}
}
二、
进入项目目录,比如:
cd C:\leidian\JNI-test1\src\main\java
编译 Java 类并生成头文件
比如:
javac -h . org/example/HelloJNI.java
这将编译 HelloJNI.java 并在当前目录生成 org_example_HelloJNI.h 头文件。
三、编写本地代码
创建c代码
#include <jni.h>
#include <stdio.h>
#include "org_example_HelloJNI.h" // 引用生成的头文件
// 实现 Java_org_example_HelloJNI_sayHello 方法
JNIEXPORT void JNICALL Java_org_example_HelloJNI_sayHello(JNIEnv *env, jobject obj) {
printf("Hello from C!\n");
return;
}
- 函数名
Java_org_example_HelloJNI_sayHello必须与头文件中的签名完全一致。 - 确保包含了正确的头文件
org_example_HelloJNI.h。
四、编译生成动态链接库
Windows:(需要在系统环境变量中添加JAVA_HOME)
gcc -I"%JAVA_HOME%\include" -I"%JAVA_HOME%\include\win32" -shared -o hello.dll HelloJNI.c
五、确保 JVM 能够找到并加载生成的本地库
假设你将 hello.dll 放在 C:\leidian\JNI-test1\lib 目录下。
-
打开 Run/Debug Configurations
在 IntelliJ IDEA 中,点击菜单
Run>Edit Configurations... -
选择对应的运行配置
选择你的
HelloJNI运行配置,如果没有则创建一个新的 Application 配置。 -
在
VM options(可能需要再Modify_options中在Java中添加VM options)中添加-Djava.library.path参数,指向包含hello.dll的目录。例如:-Djava.library.path=C:\leidian\JNI-test1\lib注意: 使用双反斜杠或单反斜杠都可以,例如
C:\\leidian\\JNI-test1\\lib或C:\leidian\JNI-test1\lib
结束


186

被折叠的 条评论
为什么被折叠?



