情况

情况是原本安装有jdk1.7,能正常运行,现在要升级到1.8.

直接在oracle的网站下载1.8安装后修改配置为1.8后:

能用javac编译成功,但java命令运行时报错:

Failed reading value of registry key:
        Software\JavaSoft\Java Runtime Enviroment\1.7\javaHome
Error:could not find java.dll

Error:could not find Java 2 Runtime Environment.

配置参数详细参考:

java实战(一)-----------jdk环境配置

原因

这种情况多数是因为系统中有多个jdk导致的。

注册表中是旧版本的注册信息,所以我们只修改配置是无效的。

遇到问题---java---安装新版本jdk后Failed reading value of registry key-LMLPHP

解决方案

需要修改注册表。或者先把原jdk完全卸载后再安装新的,按步骤配置即可。

推荐卸载重装jdk,因为注册表需要修改的细节太多

卸载时在控制面板中找到卸载或更改程序。

遇到问题---java---安装新版本jdk后Failed reading value of registry key-LMLPHP

建议全部卸载后再新装 需要的jdk版本。

卸载重装配置好后可能会遇到问题Error opening registry key'software\Javasoft\Java Runtime Environment'。

解决方法往下看。

修改注册表。

运行regedit打开注册表

找到

[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit]

[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Plug-in]

[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment]

分别把其中的版本修改成我们新安装的版本即可。

遇到问题---java---安装新版本jdk后Failed reading value of registry key-LMLPHP

遇到问题---java---安装新版本jdk后Failed reading value of registry key-LMLPHP

遇到问题Error: opening registry key

卸载后重装了1.8并且配置后之后又出现了新的问题。

Error: opening registry key 'Software\JavaSoft\Java Runtime Environment'
Error: could not find java.dll
Error: Could not find Java SE Runtime Environment.

每个人的系统情况有所不同,以下列出了所有可能的解法,希望有一种适合你。

解法一path中的JAVA_HOME放到最前面

Path系统环境变量中,把%JAVA_HOME%\bin调整到最前面,使用path命令查看是否生效(不生效的需要注销或者重启)。

遇到问题---java---安装新版本jdk后Failed reading value of registry key-LMLPHP

解法二注册表键名不对应

因为注册表中一个键项被本地化成中文名字了.
 [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\java运行时环境]
 改成:
 [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java   Runtime   Environment]
 windows开始菜单-> 运行-> 输入 "regedit ",然后回车-> ,按f3打开查找框-> 输入“java运行时环境”,找到之后,点右键-重命名为: "Java   Runtime   Environment ",然后再按f3,一直把找到的全部都改掉为止。

解法三注册表文件夹重复

注册表:HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\  路径下有两个文件夹,删掉一个就好了,这一点出现的比较少(未测试)。

解法四java.exe等在System32文件夹中出现

将C盘中Windows\System32和Windows\SysWOW64文件夹下的java.exe, javaw.exe and javaws.exe文件删掉即可。
PS:我的是这种方法解决的,这是win8的解决方案,如果是win7 64的,删掉Windows\System32下的java.exe, javaw.exe 就行了

遇到问题---java---安装新版本jdk后Failed reading value of registry key-LMLPHP

遇到问题---java---安装新版本jdk后Failed reading value of registry key-LMLPHP

遇到问题---java---安装新版本jdk后Failed reading value of registry key-LMLPHP

运行成功

遇到问题---java---安装新版本jdk后Failed reading value of registry key-LMLPHP

05-11 20:07