JVM不使用JNI从Environment Variable类路径加载jar文件

时间:2011-03-10 09:44:51

标签: java c++ java-native-interface

请考虑以下代码。

    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”;

我想在环境变量的classpath中添加这个jar文件。 但是当我将这个jar文件添加到classpath变量时,jvm不会加载这个jar文件。 我不知道为什么会这样?

1 个答案:

答案 0 :(得分:0)

 JNI_GetDefaultJavaVMInitArgs(&vm_args);

在该行之后移动选项字符串的设置。 (想想你实际上可以将它们全部一起删除,不再认为它需要了)