在C++中調用Java方法,可以使用Java Native Interface (JNI)技術。JNI是Java平臺的一部分,允許C++代碼與Java代碼進行交互。以下是實現C++調用Java方法的步驟:
// MyClass.java
public class MyClass {
public native void myNativeMethod(); // 聲明本地方法
static {
System.loadLibrary("myjni"); // 加載包含本地方法實現的庫
}
public static void main(String[] args) {
MyClass obj = new MyClass();
obj.myNativeMethod(); // 調用本地方法
}
}
javac
編譯Java類,并使用javah
生成JNI頭文件:javac MyClass.java
javah -jni MyClass
// myjni.cpp
#include <jni.h>
#include <iostream>
JNIEXPORT void JNICALL Java_MyClass_myNativeMethod(JNIEnv *env, jobject obj) {
std::cout << "Hello from C++!" << std::endl;
}
對于Linux或macOS:
g++ -shared -fPIC -I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux myjni.cpp -o libmyjni.so
對于Windows:
g++ -shared -fPIC -I"%JAVA_HOME%/include" -I"%JAVA_HOME%/include/win32" myjni.cpp -o myjni.dll
確保共享庫(libmyjni.so
或myjni.dll
)位于Java庫路徑中,然后運行Java程序:
java MyClass
如果一切正常,你將看到輸出"Hello from C++!",這表明C++成功調用了Java方法。