2011-03-10 62 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