0
我正在嘗試使用C++的JNI。但我得到這個錯誤:Class not found!
。我搜查了其他解決,但不爲我工作。
Code.java:JNI:未找到類或FindClass返回NULL
package com.xxx;
public class Code
{
public void getMessage()
{
System.out.println("Hello World!");
}
}
main.cpp中:我的文件
#include <jni.h>
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
JavaVM* jvm;
JNIEnv* env;
JavaVMInitArgs jvm_args;
JavaVMOption options[1];
options[0].optionString = "-Djava.class.path=myclasses";
jvm_args.version = JNI_VERSION_1_2;
jvm_args.options = options;
jvm_args.nOptions = 1;
jvm_args.ignoreUnrecognized = JNI_TRUE;
jint res = JNI_CreateJavaVM(&jvm, (void**)&env, &jvm_args);
if (res < 0)
{
cout << "Cannot create JVM!\n";
exit(1);
}
jclass class_ = env->FindClass("com/xxx/Code");
if (class_ == 0)
{
cout << "Code class not found!\n";
exit(1);
}
jmethodID method_id = env->GetMethodID(class_, "getMessage", "()V");
if (method_id == 0)
{
cout << "getMessage() method not found!\n";
exit(1);
}
env->CallVoidMethod(class_, method_id);
return 0;
}
我試圖-Djava.class.path=myclasses/com/xxx
和env->FindClass("Code");
。我也試過-Djava.class.path=myclasses
和env->FindClass("com/xxx/Code");
。但兩者都不起作用。什麼是Code class not found!
消息的原因?
您是否使用javac編譯Code.java? – Calculator
我用javac編譯Code.java。但結果是一樣的。 –
當你執行main時,你確定myclasses在工作目錄嗎? – Calculator