[英]call java methods from C++ using JNI
我想使用 JNI 從 C++ 訪問 java 方法。 我嘗試這段代碼它找不到 java 的 class 文件。我在線程“main”java.lang.NoClassDefFoundError 中得到錯誤異常:這樣的例子
JAVA 代碼
import java.io.*;
import java.util.*;
public class Example {
public static void main(String[] args) {
new Example().printHelloWorld();
}
public void printHelloWorld() {
System.out.println("Hello, World!");
}
}
C++ 密碼是
#include <jni.h>
#include <iostream>
using namespace std;
int main()
{
// create JNI environment
JNIEnv* env;
JavaVM* jvm;
JavaVMInitArgs args;
args.version = JNI_VERSION_1_6;
JavaVMOption options[1];
char optionString[] = "-Djava.class.path=";
options[0].optionString = optionString;
args.options = options;
args.ignoreUnrecognized = JNI_FALSE;
JNI_CreateJavaVM(&jvm, (void**)&env, &args);
// find class of Java method
jclass cls = env->FindClass("Example");
if (env->ExceptionCheck()) {
env->ExceptionDescribe();
env->ExceptionClear();
return 1;
}
// get method ID of Java method
jmethodID mid = env->GetMethodID(cls, "printHelloWorld", "()V");
if (env->ExceptionCheck()) {
env->ExceptionDescribe();
env->ExceptionClear();
return 1;
}
// call Java method
jobject obj = env->AllocObject(cls);
env->CallVoidMethod(obj, mid);
if (env->ExceptionCheck()) {
env->ExceptionDescribe();
env->ExceptionClear();
return 1;
}
// clean up and exit
jvm->DestroyJavaVM();
return 0;
}
我找不到錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.