在Java开发中,有时我们需要调用操作系统底层功能、高性能计算库,或者复用已有的C/C++代码。这时,Java本地接口(Java Native Interface,简称JNI)就派上用场了。本篇Java JNI教程将手把手教你如何从零开始使用JNI调用C++代码,即使是编程小白也能轻松上手!

JNI(Java Native Interface)是Java提供的一套标准接口,允许Java代码与用其他语言(如C、C++)编写的本地代码进行交互。通过JNI,你可以:
使用JNI调用C++主要分为以下5个步骤:
// HelloWorld.javapublic class HelloWorld { // 声明一个native方法 public native void sayHello(); // 加载本地库 static { System.loadLibrary("hello"); // 加载 libhello.so (Linux) 或 hello.dll (Windows) } public static void main(String[] args) { new HelloWorld().sayHello(); }}打开终端,执行以下命令:
javac HelloWorld.java运行以下命令生成头文件:
javah HelloWorld这会生成 HelloWorld.h 文件,内容大致如下:
/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class HelloWorld */#ifndef _Included_HelloWorld#define _Included_HelloWorld#ifdef __cplusplusextern "C" {#endifJNIEXPORT void JNICALL Java_HelloWorld_sayHello (JNIEnv *, jobject);#ifdef __cplusplus}#endif#endif注意:JDK 10及以上版本已移除
javah工具。你可以使用javac -h . HelloWorld.java直接生成头文件。
创建 HelloWorld.cpp 文件:
#include <iostream>#include "HelloWorld.h"// 实现native方法JNIEXPORT void JNICALL Java_HelloWorld_sayHello(JNIEnv *env, jobject obj) { std::cout << "Hello from C++!" << std::endl;}Linux/macOS(需安装g++和JDK):
g++ -shared -fPIC -I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux \ -o libhello.so HelloWorld.cppWindows(使用MinGW或MSVC):
g++ -shared -I"%JAVA_HOME%\include" -I"%JAVA_HOME%\include\win32" \ -o hello.dll HelloWorld.cpp确保生成的动态库(libhello.so 或 hello.dll)位于Java可加载路径中(如当前目录)。
java HelloWorld如果一切顺利,你将看到输出:
Hello from C++!Java_包名_类名_方法名格式通过本篇Java本地接口教程,你应该已经掌握了如何使用JNI开发入门的基本流程。虽然JNI涉及跨语言编程,有一定复杂度,但只要按照步骤操作,就能成功打通Java与C++之间的桥梁。记住,JNI适用于性能敏感或需要底层访问的场景,日常开发中应优先考虑纯Java解决方案。
希望这篇Java JNI教程对你有所帮助!动手试试吧,实践是最好的老师。
本文由主机测评网于2025-12-11发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025126321.html