[英]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.