它不会创建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将成功执行。