2011-03-10 93 views
0

請考慮以下代碼。JVM不使用JNI從環境變量類路徑加載jar文件

JavaVM * jvm; 
    JNIEnv *env; 
    JavaVMInitArgs vm_args; 
    JavaVMOption options; 
    options.optionString ="-Djava.class.path=D:\\Work\\mybytes.jar"; 
    vm_args.version = JNI_VERSION_1_6; 
    vm_args.nOptions = 1; 
    vm_args.options = &options; 
    vm_args.ignoreUnrecognized = 0; 
    JNI_GetDefaultJavaVMInitArgs(&vm_args); 
    int ret = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args); 
    if(ret >=0) 
    { 
     jclass myBytesClass=env->FindClass("MyBytes"); 
     jmethodID myByteConstructor=env->GetMethodID(myBytesClass,"<init>","()V"); 
     myByteObj=env->NewObject(myBytesClass,myByteConstructor,NULL); 
     char* printBytes=env->GetMethodID(myBytesClass,"printBytes","([B)V"); 
    } 

我不想在代碼中使用此語句。

options.optionString =「 - Djava.class.path = D:\ Work \ mybytes.jar」;

我想將此jar文件添加到環境變量的classpath中。 但是當我將這個jar文件添加到classpath變量時,jvm不會加載這個jar文件。 我不知道爲什麼會發生這種情況?

+0

你能正確地格式化你的代碼 - 縮進每行4個空格。 – tgdavies 2011-03-10 09:49:43

回答

0
JNI_GetDefaultJavaVMInitArgs(&vm_args); 

在該行之後移動選項字符串的設置。 (想想你實際上可以將它們一起移除,不要再想它了)

+0

仍然無法正常工作 – 2011-03-10 10:12:31