我試圖調用從C我的java類++(MS VC 2008)用JNI,但問題是,findClass的工作時,纔會有我的java類是不被導入的包。如果我添加任何包(例如java.lang.String或java.io.File),則FindClass失敗並返回任何值。爲什麼?JNI findClass的失敗,進口
C++代碼://///////////////////////////////////
JNIEnv *env;
JavaVM * jvm;
JavaVMInitArgs vm_args;
JavaVMOption options;
options.optionString = "-Djava.class.path=c:\\mypackage.jar";
vm_args.version = JNI_VERSION_1_6;
vm_args.nOptions = 1;
vm_args.options = &options;
vm_args.ignoreUnrecognized = 0;
int ret = JNI_CreateJavaVM(jvm, (void**)&env, &vm_args);
if(env == NULL)
printf("\nJVM Failed\n");
jclass cls = env->FindClass("mypackage/test/MyClass");
if(cls==0)
{
printf("\nFindClass Failed\n");
}
Java代碼://///////////////////////////////////
package mypackage.test;
import java.io.File; //if I comment this row, FindClass works...
public class MyClass {
}
更新:
這是我的代碼:http://www.sendspace.com/file/233tfm
- 副本在C:\ JNITest
- 更改屬性的工作目錄\項目
- 支票JNI_test1.cpp的optionString
千恩萬謝的調試設置, 裏卡多
它只是沒有找到任何東西或引發一些例外?如果你嘗試FindClass(「java.io.File」),會發生什麼? –
jclass cls = env-> FindClass(「java/io/File」);工作,但我需要在我的java類中導入java.io.File – Riccardo
你可以發佈你的代碼,因爲它現在是 – jogabonito