它不会创建Java VM(JNI)

我的简单命令行应用程序:

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; } 

给我:

 Error occurred during initialization of VM Unable to load native library: Can't find dependent libraries 

永远不会达到“返回0”的断点。 jvm.dll与我的命令行应用程序驻留在同一目录中。

我不明白这有什么不对。 有任何想法吗? 提前完成

我认为在Sun JNI FAQ中这个问题可以解答您的问题。

TL; DR版本:不要移动JVM安装的DLL。

在我的经验中,

原因

也许,JVM.DLL位于下面的路径中。

C:\ Program Files \ Java \ jdk1.6.0_xx \ jre \ bin \ client \(a)

以下文件夹包含JVM需要的许多DLL;

C:\ Program Files \ Java \ jdk1.6.0_xx \ jre \ bin \(b)

因此, JMV.DLL (您动态链接)尝试搜索其父文件夹中的所有DLL (b)。

不要将JVM.DLL复制到.exe所在的文件夹中! 检查PATH系统变量。 它必须包含(a)和(b)路径。 如果是这样,也许您的.exe将成功执行。