【问题标题】:Running Java gives "Error: could not open `C:\Program Files\Java\jre6\lib\amd64\jvm.cfg'"运行 Java 给出“错误:无法打开 `C:\Program Files\Java\jre6\lib\amd64\jvm.cfg'”
【发布时间】:2011-08-27 13:06:04
【问题描述】:

经过多年的正常工作,我在尝试启动 JVM 时突然收到此消息:

Error: could not open `C:\Program Files\Java\jre6\lib\amd64\jvm.cfg'

我尝试卸载,并收到一条消息说缺少 DLL(未指定) 尝试重新安装,但无济于事。

同时,在尝试启动 Scala 时,我得到:

\Java\jdk1.6.0_25\bin\java.exe was unexpected at this time.

检查%JAVA_HOME%%path% - 都可以

谁能帮忙?

【问题讨论】:

  • 看起来您的 JVM 已损坏,或者您的 PATH 已被污染。您认为您正在运行的 JVM 可能不是您应该运行的 JVM。尝试运行 java -version 以查看它是否为 1.6.0_xx。
  • 这与 Scala 有什么关系?
  • 如果没有收到消息,我什至无法执行 java -version!
  • 这与scala有关,因为scala也失败了。两者同时发生。
  • 这是我在谷歌中找到的。也许会有所帮助:link

标签: java scala


【解决方案1】:

我检查了我的环境变量 - JAVA_HOME & PATH,它们都指向 C:\java。所以这有点令人沮丧。一段时间后,我发现默认安装也将 java.exe、javaw.exe 和 javaws.exe 复制到了 C:\Windows\System32(即 JRE 的卸载不顺利)。我刚刚删除了它们,瞧,我回到了正轨。那个恼人的错误不再出现了。

这对我有用

所以,如果存在,请从 System32 中删除 java.exe、javaw.exe 和 javaws.exe

【讨论】:

  • 为什么 Oracle/Sun 决定这样做而不修复卸载程序是我无法理解的。谢谢。
  • 刚刚删除了整个文件夹 C:/Windows/jre,它允许正确的 java exe 在路径的下方被使用。不知道是什么将 java 安装到我的 windows 目录中并将其放在路径上:|
  • 我的情况:Eclipse 停止启动。由于缺少 jvm.cfg 文件,Proguard 无法加载。删除了 windows/jre 和上面提到的 exe 文件。解决了我的问题。这似乎是在上周随机发生的。没有任何解释。
  • 在我从 C:\Windows\System32 中删除 java.exe、javaw.exe 和 javaws.exe 后它起作用了。感谢@Full-Stack 软件工程师。你节省了我的时间。
【解决方案2】:

将 %JAVA_HOME%\bin 放在 PATH 的开头。

【讨论】:

  • 虽然我的 PATH 和 JAVA_HOME 没问题,但在 Windows 上遇到了同样的问题。将 %JAVA_HOME% 移动到 PATH 的开头解决了它。谢谢!
  • 尽管这样做,我还是得到了错误。我没有注意到当我打开 CMD 提示符时,它会默认为 C:\Windows\System32,其中包含了麻烦的 java 安装。更改到任何其他目录将使 Java 与路径上我想要的 JDK 一起正常工作。
【解决方案3】:

可能是一个稍微不同的原因,但第二个问题发生在我在 Win7 (x64) 上的 scala 2.9.0.1 中,尽管 scala-2.9.1.final 已经解决了这里提到的这个问题:

\Java\jdk1.6.0_25\bin\java.exe was unexpected at this time.

我的%JAVA_HOME% 设置为这样的路径:c:\program files(x86)\Java\jdk...

注意空格和括号。

如果您将 %SCALA_HOME%\bin\scala.bat 中的第 24 行更改为:

if exist "%JAVA_HOME%\bin\java.exe" set _JAVACMD=%JAVA_HOME%\bin\java.exe

if exist "%JAVA_HOME%\bin\java.exe" set "_JAVACMD=%JAVA_HOME%\bin\java.exe"

它工作正常。请注意 set 命令参数周围的引号,这将正确地将变量值中的任何空格和“特殊”字符(例如:空格和括号)括起来。

希望这有助于其他人寻找答案。

【讨论】:

  • +1,但同样的处理也应该应用于文件:%SCALA_HOME%\bin\scalac.bat
  • 谢谢!就我而言,我重命名了安装 Java 的 Windows 分区。恢复该更改修复了它。
【解决方案4】:

我遇到了同样的问题:我有一个 64 位 Windows,当我在 CMD-Console 中键入“java -version”时,我收到了相同的错误消息。 尝试启动一个 64bit-cmd(C:\Windows\SysWOW64\cmd.exe) 你会看到,它在那里工作;)

【讨论】:

    【解决方案5】:

    我对这个问题有一个稍微不同的解决方案。我的 PATH 和 JAVA_HOME 在

    中指向 JDK12
    C:\Program Files\Java
    

    但是执行命令:

    Java -version
    

    报错:

    Error: could not open `C:\ProgramFiles\Java\jre1.8.0_212\lib\amd64\jvm.cfg'
    

    我不得不删除与 System32 不同的目录中的可执行文件(Java.exe、javaw.exe 等)文件夹,正如此处的其他答案和博客文章所建议的那样。相反,我发现问题出在以下位置的可执行文件上:

    C:\Program Files\Common Files\Oracle 
    

    因为在

    中没有任何与 Java 相关的内容
    C:\Windows\System32
    

    如果您遇到此问题并且 System32 中没有任何内容,请检查上述“公共文件”目录中的 oracle 目录并将其删除。

    之后,您的 PATH 引用应该可以正常工作了!

    【讨论】:

    • 检查路径“C:\Program Files (x86)\Common Files\Oracle\Java\javapath” 有时,您可能安装了一些静默安装 Java 的程序。
    【解决方案6】:
    C:\ProgramData\Oracle\Java\javapath
    

    我备份了其中的文件并从那里删除了这些文件。然后我打开了一个新的 cmd 提示符,它就像一个魅力。

    【讨论】:

      【解决方案7】:

      我想我会分享我如何解决相同的问题“错误无法打开 lib\amd64\jvm.cfg”。我发现 Java 运行时 Jre7 在 lib 下缺少 amd64 文件夹。但是,我有 1.7.0_25 JDK,它有 jre 文件夹,也有 amd64。

      我将 jre7 文件夹的原始内容移动到备份文件中,并从 1.7.0_25\jre 复制了所有内容。

      现在我不再收到此错误并且能够继续使用场景构建器。

      【讨论】:

        【解决方案8】:

        如果这之前有效,则意味着 PATH 不再正确。

        PATH 变得太长并被截断时,就会发生这种情况。
        所有帖子(如this one)都建议updating the PATH,您可以先在单独的DOS会话中对其进行测试,方法是设置最小路径并查看java是否在那里再次工作。


        OP Highland Mark 终于结束了:

        最后通过卸载java,从注册表中删除所有对它的引用,然后重新安装来修复。

        可怕 ;)

        【讨论】:

        • 谢谢。我仍然无法对其进行排序。使用最小路径 (path = %JAVA_HOME%\bin) 它可以工作 - 但是,正如你所说,我在 "...;%JAVA_HOME%\bin;..." 的实际路径中看不到问题包含相同的内容。
        • 终于设法使用JavaRA & MSICUU2.exe 删除了旧版本的JRE,重新加载了最新版本,但仍然是相同的消息。
        • @Highland:如果这适用于最小路径但不适用于完整路径,则意味着 %JAVA_HOME%\bin 不是问题。 PATH 中的其他一些元素会导致运行时失败。您能否尝试使用您将构建的PATH,一次一个元素,以查看 java 何时停止启动?
        • 感谢 VonC - 这让我有一些工作要做。我会回来报告的。
        • 它不在路径中。最后通过卸载java,从注册表中删除所有对它的引用,然后重新安装来修复。没有更聪明,但又回来工作了。谢谢大家。
        【解决方案9】:

        我的工作 PC 上的 Java 7 安装在一个补丁被强制提供给我们后崩溃了,每当您尝试运行 Java 程序时都会出现此错误。 Java 7 安装的整个“lib”子目录不知何故消失了!可能与同时安装了 Java 6 和 Java 7 有关——“jre6”目录仍然包含所有内容。

        无论如何,我通过卸载 Java 6 和 Java 7 并仅重新安装 Java 7 来修复它。但如果它所抱怨的文件确实存在,那么您可能遇到了一些路径问题其他答案在这里。

        【讨论】:

        • 除非在我的情况下重新安装 JRE 并没有替换丢失的 lib 文件夹:(
        • 啊...我重新安装了 64 位 JRE,但结果发现还安装了 32 位 JRE。我卸载了这两个——无论如何它们都落后了几个补丁级别——然后重新安装了 64 位 JRE(仅限),现在一切都正常了。
        【解决方案10】:

        突然有同样的问题,从一天到另一个日食说

        Failed to load the JNI shared library "C:/JDK/bin/client/jvm.dll"`.
        

        尝试在控制台上运行 java 之后

        Error: could not open `C:\WINDOWS\jre\lib\amd64\jvm.cfg' 
        

        现在我刚刚删除了整个目录

        C:\WINDOWS\jre
        

        一切都恢复正常了……我不知道这个 jre 是从那里来的,我希望它不是病毒

        【讨论】:

          【解决方案11】:

          另一种解决方法是在 Windows 中使用短路径:

          1. 使用 cmd.exe 打开 windows 命令控制台
          2. 转到c:\
          3. 键入命令> dir program* /x
          4. 它应该显示为短路径,如:PROGRA~2
          5. 所以C:\PROGRA~2C:\Program Files (x86) 相同
          6. 在您的JAVA_HOME 替换路径中: C:\PROGRA~2\Java\jre7

          这应该适用于 windows 64 环境,因为它在 win7 64 位版本中适用于我。

          【讨论】:

            【解决方案12】:

            我已将 java 安装路径从 c:\Program Files (x86)\java 更改为另一个文件夹,如 c:\java\jdk1.7 并相应地更新了 %Java_HOME% 和路径值,它起作用了。

            例子

            %JAVA_HOME% = C:\java\JDK1.7
            
            path-C:\java\JDK1.7\bin; 
            

            【讨论】:

              【解决方案13】:

              我在 Eclipse 中遇到了同样的问题,我通过将 JRE 从 64 位更改为 32 位 来解决它:

              Window > Preferences > Java > Installed JREs > Add... > Next > Directory > 选择“C:\Program Files (x86)\Java\jre1.8.0_65”而不是“C:\Program Files\Java\ jre1.8.0_60"

              【讨论】:

              • 我在安装 eclipse 时遇到了这个问题。我在 JAVA 更新后安装 eclipse,我的早期版本是 1.8.0_60 而较新的版本是 1.8.0_191 我猜在安装更新时会更改,所以我将文件夹名称更改为较早的,即 1.8.0_60 。所以问题在于 JAVA 更新的安装后脚本我猜@更新安装的时间两个名称都应该由安装更改,但事实并非如此。即安装后 java 更新后剩余的微小变化。
              【解决方案14】:
              • 我在Windows 2008R2Java 1.7.0_15 上遇到了类似的问题(试图在 Windows 上启动 Jenkins 从代理)

              • 我有两种情况导致了这个问题,改变它们都解决了这个问题:

                1) 将Java 安装在与unix 兼容的路径中(从c:\Program Files\... to c:\Software\... 更改);我不认为这直接影响了这个线程中描述的问题,但注意到了变化;

                2) 不通过快捷方式运行Java。它最初使用快捷方式失败,但来自直接可执行文件 (C:\Software\Java...\bin\java) 的 re-running 起作用了。

              【讨论】:

                【解决方案15】:

                重新安装 java 对我没有帮助。但是将 JAVA_HOME 变量放在 env-vars 开头的技巧。从jdk1.7.0_11升级到jdk1.7.0_13后出现问题

                【讨论】:

                  【解决方案16】:

                  我在更新你的 java 后遇到了这个问题。解决此问题的最佳方法是转到您的c:/ProgramFiles/Java 文件夹。在那里你会发现两个 jre 文件夹,一个是 jre.your 版本,另一个与 jdk 文件夹完全相同。尝试删除 jre.1.your version 文件夹。到这里你的问题就解决了。希望这可能会有所帮助。它对我有用。

                  【讨论】:

                    【解决方案17】:

                    通常是因为升级了 JRE。

                    它将符号链接更改为 C:\ProgramData\Oracle\Java\javapath\

                    安装 JDK - 它会解决这个问题。

                    【讨论】:

                      【解决方案18】:
                      Error: could not open `C:\Program Files\Java\jre6\lib\amd64\jvm.cfg'
                      

                      看着@它,安装后脚本的问题在那里并且得到传播,因为我正在使用更新 jdk8 1.8.0_191,因为我在安装 java 更新后出现问题并且这是自动发生的。

                      Error: could not open `C:\Program Files\Java\jre1.8.0_191\lib\amd64\jvm.cfg'
                      

                      在这种情况下这将永远不会结束,需要做一些解决方法,比如手动更改路径。

                      【讨论】:

                        【解决方案19】:

                        删除system32 for windows下的jar。 删除 C:\Program Files\Common Files\Oracle 下的 jars

                        编辑环境变量设置 JAVA_HOME 和 SET PATH 到 bin

                        【讨论】:

                          【解决方案20】:

                          它不在路径中。最后通过卸载java,从注册表中删除所有对它的引用,然后重新安装来修复。没有更明智的,但又回来工作了。感谢所有@Highland Mark-您能告诉我从注册表中删除引用的过程吗?我尝试了这里提到的所有可能的方法,但没有任何效果。

                          【讨论】:

                            【解决方案21】:

                            如果您已经下载了多个 Jdk,则必须删除除您要使用的 JDK 之外的所有 JDK!

                            【讨论】:

                              猜你喜欢
                              • 1970-01-01
                              • 2019-02-16
                              • 2012-05-09
                              • 1970-01-01
                              • 1970-01-01
                              • 1970-01-01
                              • 1970-01-01
                              • 2012-06-13
                              • 1970-01-01
                              相关资源
                              最近更新 更多