私は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