我尝试使用以下代码将选项传递给JNI_CreateJavaVM():
auto options = std::string{"-XX:+UseMembar -Djava.class.path="} + clspath;
jvm_options.optionString = const_cast<char *>(options.c_str());
args.options = &jvm_options;
args.ignoreUnrecognized = 0;
int rv;
rv = JNI_CreateJavaVM(jvm, reinterpret_cast<void **>(&env_), &args);
电话结束后,rv为-6。
我应该如何通过该选项?
由于
答案 0 :(得分:0)
结果可以通过环境变量JAVA_TOOL_OPTIONS
传递选项答案 1 :(得分:0)
我看到您以不同的方式解决了您的问题,但这就是您的代码无法正常工作的原因。您在一个选项参数中传递了两个选项。正如https://docs.oracle.com/javase/8/docs/technotes/guides/jni/spec/invocation.html#JNI_CreateJavaVM上的文档所述
选项字段是以下类型的数组:
typedef struct JavaVMOption { char *optionString; /* the option as a string in the default platform encoding */ void *extraInfo; } JavaVMOption;
注意&#34;数组&#34;部分。将-XX:+UseMembar
和-Djava.class.path=...
放在jvm_options[0]
和jvm_options[1]
的单独字符串中,然后设置args.nOptions = 2