【问题标题】:Error occurred during initialization of VM虚拟机初始化时出错
【发布时间】:2010-03-25 15:32:41
【问题描述】:

运行我使用 C++ 代码在 64 位机器上创建的可执行文件时出现以下错误:

"虚拟机初始化过程中发生错误 无法加载原生库:找不到依赖库”

我的 PATH(如下所示)显然指向 jvm.dll,因为我在 C:\Progra~1\Java\jdk1.6.0_17\jre\bin 和 C:\Windows\System32 中都有该文件

PATH=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

有人对导致此错误的原因有任何想法吗?谢谢。

【问题讨论】:

    标签: jvm initialization


    【解决方案1】:

    使用dependency walker 找出缺少的 dll。

    【讨论】:

    • 感谢您的回复。这是一个很棒的工具。运行分析器时,出现错误:LoadLibraryA("C:\bin\verify.dll") 由线程 1 返回 NULL。错误:找不到指定的模块 (126) 它说它正在被调用c:\windows\system32\JVM.DLL 两个问题,也许你可以帮助解决: 1) 为什么它调用 system32 JVM 而不是我 PATH 中的那个? 2) 为什么它会尝试在 C:\bin 中查找任何 dll?再次感谢。
    • Java 倾向于将二进制文件安装到 Windows\System32 中。您可能正在运行那些而不是稍后在您的路径中运行的那些。如果您打算手动将 java 添加到路径中,只需从 windows\system32 中删除 java 和 javaw。关于 dll 的位置,不知道。
    【解决方案2】:

    当我在我的 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\
    

    希望对您有所帮助。

    【讨论】:

      【解决方案3】:

      这就是我解决类似问题的方法:

      【讨论】:

        【解决方案4】:

        在我的例子中,我的 exe 文件所在的文件夹中有一个 jvm.dll 文件。我只是从那里删除了 jvm.dll 并且它起作用了。可能,它在 PATH 中的那个之前

        【讨论】:

          【解决方案5】:

          我收到此错误是因为我的 PATH(环境变量)设置不正确。

          1. 在设置 PATH 变量时,将 jvm.dll 的路径设置为列表中的第一个路径
          2. 重启你的机器。

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

          【讨论】:

            【解决方案6】:

            我有一个复杂的案例。在与我的exe 文件相同的文件夹中有一个jvm.dll 文件。我删除了它(因为它不应该在那里)但当时找不到jvm.dll

            我想通过将%JAVA_HOME%\jre\bin\server 添加到我的PATH 来解决它,因为jvm.dll 位于那里。但是,它没有用。事实证明,在PATH 指定的路径中搜索jvm.dll 时,Windows 加载程序不会扩展JAVA_HOME 变量,因为我将JAVA_HOME 定义为用户变量。当我将JAVA_HOME 定义为系统变量时,它开始按预期工作。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2012-05-18
              • 2019-02-06
              • 1970-01-01
              • 2011-05-01
              • 1970-01-01
              • 2014-11-23
              • 1970-01-01
              相关资源
              最近更新 更多