虚拟机初始化时发生错误

15
在64位机器上使用C++代码创建可执行文件时,运行该文件时我遇到了以下错误:
“VM初始化期间发生错误 无法加载本地库:找不到依赖库”
我的路径(如下所示)显然指向jvm.dll,因为我在C:\Progra~1\Java\jdk1.6.0_17\jre\bin和C:\Windows\System32中都有这个文件。
路径= C:\Program Files (x86)\Gmake\bin;C:\Program Files (x86)\apache-ant-1.7.1\bin;C:\Progra~1\Java\jdk1.6.0_17\bin;C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\Tools;C:\Progra~1\Java\jdk1.6.0_17\jre\bin\server;C:\Progra~1\Java\jdk1.6.0_17\jre\bin;C:\Windows\System32
是否有人知道是什么原因导致了这个错误?谢谢。
6个回答

6

谢谢回复。这是一个很棒的工具。运行分析器时,我遇到了一个错误: LoadLibraryA("C:\bin\verify.dll") returned NULL by thread 1. Error: The specified module could not be found (126)它说它被c:\windows\system32\JVM.DLL调用。有两个问题也许你可以帮忙解决: 1)为什么它会调用system32 JVM而不是我的PATH中的JVM? 2)为什么它会尝试在C:\bin中查找任何dll文件?再次感谢。 - Brittany
3
Java有一个很不好的习惯,它会将二进制文件安装到Windows\System32中。你可能正在运行那些而不是路径后面的版本。 如果您打算手动将Java添加到路径,请从windows\system32中删除java和javaw。关于dll位置,没有任何想法。 - Omry Yadan

5

当我在我的Windows2008 R2版本上运行java.exe时,我遇到了同样的问题。

我的路径是

PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32
\WindowsPowerShell\v1.0\;C:\Program Files\System Center Operations Manager 2007\
;C:\Java\jdk1.6.0_33\bin

当我在C:\Java\jdk1.6.0_33\bin下运行java.exe,它能够正常工作。我发现c:\Windows\System32\目录下也有一个java.exe的副本。当我运行c:\Windows\System32\java.exe时,它显示相同的错误:
C:\>Windows\System32\java.exe
Error occurred during initialization of VM
Unable to load native library: Can't find dependent libraries

我通过将C:\Java\jdk1.6.0_33\bin移动到PATH环境变量的开头来解决了这个问题。
PATH=C:\Java\jdk1.6.0_33\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\
Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\System Center
Operations Manager 2007\

希望这可以帮助你。

2

在我的情况下,和我的exe文件在同一文件夹中有一个jvm.dll文件。我只是从那里删除了jvm.dll,然后它就可以工作了。很可能,那个文件优先于PATH中的那个文件。


2

1

我得到了这个错误,因为我的PATH(环境变量)没有正确设置。

  1. 在设置PATH变量时,请将jvm.dll的路径作为列表中的第一个路径。
  2. 重新启动您的计算机。

注意:不要将jvm.dll移动到您的项目目录中。


0

我遇到了一个复杂的问题。我的exe文件所在的文件夹中有一个jvm.dll文件。我删除了它(因为它不应该在那里),但是之后就找不到jvm.dll了。

我想通过将%JAVA_HOME%\jre\bin\server添加到我的PATH来解决这个问题,因为jvm.dll就在那里。然而,它没有起作用。原来Windows加载器在搜索PATH中指定的路径中的jvm.dll时不会扩展JAVA_HOME变量,因为我将JAVA_HOME定义为用户变量。当我将JAVA_HOME定义为系统变量时,它开始按预期工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接