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