我正在尝试获取可用 JVM 的默认 jvm args,但我得到了一个奇怪的输出。谁能指出我哪里出了问题?
输出:
65542
�p����Y����k�.L�R���g���J����sk��,��*�Jk��xk��
代码:
#include "jni.h"
#include <iostream>
#include <dlfcn.h>
#include <cstdlib>
using namespace std;
void * JNI_FindCreateJavaVM(char *vmlibpath) {
void *libVM = dlopen(vmlibpath, RTLD_LAZY);
if (libVM == NULL) {
return NULL;
}
return dlsym(libVM, "JNI_GetDefaultJavaVMInitArgs");
}
int main() {
JavaVMOption vm_options;
JavaVMInitArgs vm_args;
vm_args.version = JNI_VERSION_1_6;
vm_args.ignoreUnrecognized = JNI_FALSE;
vm_args.options = &vm_options;
void* (*lib_func)(void *) = 0;
lib_func = (void*(*)(void*)) JNI_FindCreateJavaVM(
"/usr/lib/jvm/java-6-sun/jre/lib/i386/client/libjvm.so");
lib_func(&vm_args);
cout << vm_args.version << endl;
cout << vm_args.options[0].optionString << endl;
return 0;
}
最佳答案
JNI_GetCreatedJavaVMs 的原型(prototype)是:
jint JNI_GetCreatedJavaVMs(JavaVM **vmBuf, jsize bufLen, jsize *nVMs);
您使用 *JavaVMInitArgs
参数调用该函数,我不确定您为什么希望您的代码打印任何合理的内容。
关于java - 如何在 JNI 中获取默认的 JVM INITIAL ARGS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2133185/