0

我有下面的函数“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_1 并进行一些处理并记录结果,并且在不关闭应用程序的情况下我想加载 Algo_2 并执行相同的处理并记录结果。它们都具有相同的命名空间和 fns。是否建议在应用程序的同一实例中执行此操作?

4

0 回答 0