错误:注册表键“Software\JavaSoft\Java Runtime Environment\CurrentVersion”?

86
当我运行以下命令时: C:\Users\ashahria\Downloads>java -jar schemaSpy_5.0.0.jar 我收到如下错误。是什么出了问题?我该怎么修复呢?
错误:注册表键“Software\JavaSoft\Java Runtime Environment'\CurrentVersion'”的值为“1.5”,但需要“1.7”。 错误:找不到 java.dll。 错误:找不到 Java SE 运行时环境。

您可以阅读以下帖子:http://www.velocityreviews.com/forums/t145273-java-jdk-and-java-jre-system-properties.html和http://aosgrp.com/products/jack/documentation_and_instructi/jack_programming_faq/my_windows_computer_tells_m.html以及http://www.coderanch.com/t/323565/java/java/Not-able-run-java-exe。 - Alex K
14个回答

115
在我的Windows 7机器上,通过以下步骤解决了该问题:
  1. 在“开始”菜单中键入“regedit”,打开注册表(谨慎操作)
  2. 在左侧的注册表资源管理器/树菜单中转到“HKEY_LOCAL_MACHINE”
  3. 在“HKEY_LOCAL_MACHINE”注册表中点击“SOFTWARE”
  4. 在“SOFTWARE”注册表中点击“JavaSoft”
  5. 在“JavaSoft”注册表列表中点击“Java Runtime Environment”
  6. 突出显示“CurrentVersion” (应在右侧的主注册表键资源管理器窗口中看到它)
  7. 将版本更改为“1.7”
这就是全部内容...应该可以解决问题。如果你已经尝试过其他指南和/或弄乱了你的注册表,则处理问题的最可靠方法是删除所有先前版本的Java(使用“程序和功能”卸载进程),然后仅重新安装您想要使用的版本。 我建议从以下发行站点获取: http://java.com(因为它通常具有最稳定的版本)
或者从Oracle网站查找您需要的特定版本: http://www.oracle.com/technetwork/java/javase/downloads/

我安装了1.7和1.8,但没有设置%JAVA_PATH%变量,Java也不在%PATH%中。由于某种原因,在从C:\Windows\System32\执行java -version时,我得到了与问题中相同的错误,但是在从任何其他目录执行它时都可以正常工作并报告最新版本。我这样做了,一切都正常工作,所以我认为某个更新未能更新所有文件,因为在我的情况下,我不得不从1.8降级到1.7。 - f.ardelian
1
通过 procmon.exe ,我发现我的注册表路径是 HKLM/SOFTWARE/Wow6432Node/JavaSoft/Java Runtime Environment/CurrentVersion。这可能是由于它是 Java 的 x64 构建版本 (我降级 1.8 到 1.7 以便与 FlashDevelop 兼容)。 - h2ooooooo
此外,在我的情况下,我不能简单地更改版本,因为由于某种原因,我在Java Runtime Environment下没有那个版本。对我有用的解决方法是在Java Runtime Environment下添加一个名为“1.7”的新键,并在其中添加一个新的字符串值JavaHome,并将其设置为JRE主目录。 - Diana Amza
另外,需要记住的是,如果大于2GB,则需要安装64位Java。 - Rafael Baptista
是什么导致了这个错误的发生? - Ajay Takur
通常情况下,安装Java的方式是非标准的(例如解压缩和注册,与运行特定平台安装程序相对),或者当应用程序所需的特定版本缺失时,通常是较旧的版本。 - undefined

56

我在电脑上安装了从JDK 1.5到1.7不同版本的软件。我需要学习JDK 1.8,所以我安装了它,但是我之前使用的Eclipse软件(依赖于早期版本的JDK)在启动时出现错误。在命令行中,我尝试检查Java版本,但是遇到以下错误:

C:\>java -version
Registry key 'Software\JavaSoft\Java Runtime Environment\CurrentVersion'
has value '1.8', but '1.6' is required.
Error: could not find java.dll
Error: could not find Java SE Runtime Environment.

解决方案:我从PATH变量中删除了

C:\ProgramData\Oracle\Java\javapath;
并将%JAVA%\bin移至PATH变量的开头,这样问题就解决了。


运行得非常顺利! - Surya Chandra
我也尝试将javapath从开头移除,但没有帮助。所以我将JAVA_HOME放在了开头而不是结尾,这样就可以了。 - ACV
你很棒 :) - Sreedhar GS
工作正常。完美。 - Pankaj Shinde
记得找到用户和系统变量中的相同项并删除它们,然后将Java安装路径添加到路径变量中。 - James Jithin

36

2
还要检查它们是否在 C:/Windows/SysWOW64 中。 - Steve Pitchers
2
如果您在建议的位置找不到它,请尝试从此处删除:C:\ProgramData\Oracle\Java\javapath,这对我起作用了。 - i_rezic

11

set PATH=c:\Program Files\Java\jdk1.6.0_45\bin;%PATH%

如果您正在使用命令提示符,则此命令可用。


这可以做到,甚至不需要管理员权限。 - learner

4

您可以按照以下步骤操作:

  • 将JAVA_HOME设置为jdk[不包括bin文件夹]
  • 将PATH设置为%JAVA_HOME%/bin;
  • 将java.exe,javaw.exe和javaws.exe放入C:\ ProgramData \ Oracle \ Java \ javapath [我在这里遇到了问题]。
  • 双击java.exe
  • 如果需要,请检查并编辑JAVA当前版本的注册表值。

对我有用 :)


3
我原本安装了Java 1.8,但由于某些原因需要降级到Java 1.6。当我卸载了Java 1.8并在命令提示符中运行“Java -Version”命令时,出现了以下错误信息:
错误: 注册表项 'Software\JavaSoft\Java Runtime Environment'\CurrentVersion' 的值为 '1.6',但需要 '1.8'。 错误: 找不到 java.dll 错误: 找不到 Java SE Runtime Environment。
卸载1.6并重新安装1.6解决了我的问题 :-)

3

我已经安装了1.5、1.6和1.7版本,以及它们各自的JRE和JDK。 - itro
然后,您需要知道您的操作系统正在使用哪个版本。要做到这一点,请转到命令提示符并键入java,如果版本低于1.7或7,则应修复您的JAVA_HOME环境路径变量。 - Adel Boutros

2
我尝试了@bcmoney提到的步骤,但对我来说,当前版本已经设置为最新版本。在我的情况下是Java8。
我安装了各种版本的java(java6、java7和java8)。我遇到了相同的错误,但是1.5和1.7变成了1.7和1.8。我在我的Windows 8.1电脑上卸载了java6。之后,我在命令提示符中尝试了java -version,错误没有出现。
我不确定这是否是正确的答案,但它对我起作用,所以我认为它也可以帮助社区。

你试过这个吗?https://dev59.com/1Gw15IYBdhLWcg3w1_UN#7425644 - Josh C.

2

调整环境变量%path%的顺序,确保jre 1.7是默认版本。


2

我刚刚卸载了Java8更新,然后再试一次。这次操作正常了!


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