Error: Registry key 'Software\JavaSoft\Java Runtime Environment'\CurrentVersion' has value '1.8', bu

在cmd中运行命令java -version是出现错误:

Error: Registry key 'Software\JavaSoft\Java Runtime Environment'\CurrentVersion'

has value '1.8', but '1.7' is required.
Error: could not find java.dll

Error: Could not find Java SE Runtime Environment.

我的配置信息:我之前安装过jdk1.6和jdk1.7后来才安装jdk1.8,但是环境变量依旧指向jdk1.7 的,为什么jdk1.8跑来掺和?

猜想:应该是jdk1.8安装后把jdk1.7覆盖了,也就是在注册表里的值把jdk1.7覆盖了

解决过程(总结百度后的结果):

1.在环境变量Path中把%JAVA_HOME%\bin;移到最前,避免被后面的变量设置C:\ProgramData\Oracle\Java\javapath;覆盖

2.在C:\Windows\System32 目录下搜索java,出来三个exe:java,javaw,javaws。把这个三个exe全删掉。

(这三个exe就是jdk安装的时候被复制到系统目录C:\Windows\System32  下的)

3.再在cmd中运行java -version,出现:

java version "1.8.0_112"
Java(TM) SE Runtime Environment (build 1.8.0_112-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.112-b15, mixed mode)

唉!这回好像正常了,但是还是不对,环境变量JAVA_HOME指向jdk1.7的 怎么出来的是jdk1.8?

这进一步支持了前面的猜想:后来安装的1.8通过注册表的值把1,7替换掉了而不需要在环境变量JAVA_HOME

设置就可以让系统认为jdk指向1.8。继续那就把指向1.8的删掉

4.把环境变量Path下的C:\ProgramData\Oracle\Java\javapath;删掉,再在cmd中运行java -version,还是指向1.8,不对,继续...

5.进入C:\ProgramData\Oracle\Java\javapath目录,把其下的java,javaw,javaws全删掉。(这就是jdk1.8生成的)。再次运行java -version,出现:

java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)


成功!终于回来了,这回真的正常了!

原来就是C:\ProgramData\Oracle\Java\javapath这个目录的三个exe:java,javaw,javaws在作祟,把原来的jdk1.7的 环境变量指向都覆盖了,删了之后就系统无法定位到jdk1.8指向的java,就无法设置环境变量,然后jdk1.7的环境变量就起作用了。



  • 26
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值