它赢了';t创建Java虚拟机(JNI)
我的简单命令行应用程序:它赢了';t创建Java虚拟机(JNI),java,c++,jvm,java-native-interface,Java,C++,Jvm,Java Native Interface,我的简单命令行应用程序: int _tmain(int argc, _TCHAR* argv[]) { JavaVM *jvm; JNIEnv *env; JavaVMInitArgs vm_args; JavaVMOption options[1]; options[0].optionString = "-Djava.class.path=."; //Path to the java source code vm_args.version = JNI_VERSION_1_6; //
int _tmain(int argc, _TCHAR* argv[])
{
JavaVM *jvm;
JNIEnv *env;
JavaVMInitArgs vm_args;
JavaVMOption options[1];
options[0].optionString = "-Djava.class.path=."; //Path to the java source code
vm_args.version = JNI_VERSION_1_6; //JDK version. This indicates version 1.6
vm_args.nOptions = 1;
vm_args.options = options;
vm_args.ignoreUnrecognized = 0;
jint ret = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args);
return 0;
}
给我:
从未到达“返回0”处的断点。jvm.dll与我的命令行应用程序位于同一目录中
我不明白怎么了。有什么想法吗?Thanx提前我想你的问题已经得到了《太阳报》JNI常见问题解答的回答 TL;DR版本:不要移动JVM安装的DLL。根据我的经验 原因 可能,JVM.DLL位于下面的路径中 C:\ProgramFiles\Java\jdk1.6.0\u xx\jre\bin\client\(a) 下面的文件夹包含JVM需要的许多DLL C:\ProgramFiles\Java\jdk1.6.0\u xx\jre\bin\(b) 因此,
JMV.DLL
(您动态链接的)尝试搜索其父文件夹(b)中的所有DLL
解决方案
不要将JVM.DLL复制到.exe所在的文件夹中!!!!
检查您的路径系统变量。它必须包含(a)和(b)条路径。
如果是这样,您的.exe可能会成功执行。
非常感谢!这就是问题所在。我看了《依赖步行者》杂志,只是复制了它。现在将其添加到path并生效。愚蠢的误导性错误信息。我不明白这个答案和你的评论如何适用于这个问题。你能详细说明一下修复方法吗?你在哪里抄的?我在我的jre或jdk的bin dir:-(@Wouter-关键是你不能移动DDL。如果你这样做,JVM就会变得混乱,正如FAQ所解释的。(jre安装目录树的实际布局可能已经改变,这可能是你看不到“经典”的原因。)但FAQ的关键点仍然有效:不要移动DLL。)
Error occurred during initialization of VM
Unable to load native library: Can't find dependent libraries