在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的环境变量就起作用了。