【发布时间】:2013-12-23 18:29:13
【问题描述】:
我正在运行以下c++代码,“ret”的值为-1(javavm的创建是错误的)
代码有什么问题?
#include <iostream>
#include <conio.h>
#include <jni.h>
using namespace std;
#pragma comment (lib,"jvm.lib");
int main(){
JavaVM *jvm;
JNIEnv *env;
JavaVMInitArgs vm_args;
JavaVMOption options;
options.optionString="hello.jar";
vm_args.version=JNI_VERSION_1_6;
vm_args.nOptions=1;
vm_args.Option=&options;
vm_args.ignoreUnrecognized=0;
int ret=JNI_CreatJavaVM(&jvm,(void**)&env,&vm_args);
}
这就是帮助
【问题讨论】:
-
这不是初始化 VM 的有效选项 - 您需要类似
-Djava.class.path=hello.jar的东西;并且初始化一个虚拟机并没有真正启动一个主类——你必须自己做。 -
它仍然返回re -1
-
除非选项不好,否则它无法启动 VM 有几个原因 - 也许它无法加载
jvm.dll。您是否尝试过在使用 filemon/regmon 观察应用的同时运行代码? -
No 我如何检查 jvm.dll 是否被加载?我正在使用 Visual Studio 的调试器