我有以下功能' 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。是否建议在应用程序的同一实例中执行此操作?