它赢了';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