使用不同的源包多次调用JNI_CreateJavaVM作为类路径

时间:2017-08-03 15:41:23

标签: java jvm java-native-interface jnienv

我有以下功能' initializeAlgo'用于使用特定的Algo jar文件初始化Java VM,稍后我使用创建的java环境来调用Jar中的其他fns。

JavaVM *jvm;
JNIEnv *env;

void initializeAlgo(const std::string& algoSourceJar) {    
    JavaVMInitArgs vm_args;                                                     
    JavaVMOption* options = new JavaVMOption[1];
    std::string classPath = "-Djava.class.path=" + algoSourceJar;    
    options[0].optionString = new char[classPath.length()]();
    strcpy(options[0].optionString, classPath.c_str());
    vm_args.version = JNI_VERSION_1_6;                                          
    vm_args.nOptions = 1;                                                       
    vm_args.options = options;
    vm_args.ignoreUnrecognized = false;

   //================= load and initialize Java VM and JNI interface============

  initStatus = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args);
}

假设我必须支持动态加载满足特定接口的多个Algo源。即加载Algo_1并执行一些处理和记录结果,并且在不关闭应用程序的情况下,我想加载Algo_2并执行相同的处理并记录结果。并且它们都具有相同的命名空间和fns。是否建议在应用程序的同一实例中执行此操作?

0 个答案:

没有答案