记一次Java多版本配置的坑

一般如果安装一切正常的话应该会出现相应的版本信息,不过有时候会出现不正常的情况。原因是你之前安装的java比你安装的jdk的版本低,就会出现这样的情况:

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 2 Runtime Environment.

(根据你使用的版本,上面的1.8和1.7之类的数字可能会有些不一样,但是处理方法应该是大同小异的)网上最简单的方法就是,卸载掉你装的java或者jdk,然后找一个相对比较低的版本与之适配,然后就可以了。jdk是个很蛋疼的东西,版本太高反而不好用。
好了,下面说一下在网上摸索到的,不用重装或者卸载的方法,那就是通过修改注册表的方式让自己的那个高版本的jdk或者java的版本变低一些,这样就可以适应了。
我们打开注册表,然后找到这个路径:

HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Runtime Environment

以我自己的为例,我的CurrentVersion是1.8,而Java7FamilyVersion却是1.7.0_67,我把两个都改成1.8之后保存。

注意:重新在cmd里输入一次java -version

得到的就是:

java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b15)
Java HotSpot(TM) Client VM (build 25.45-b02, mixed mode)

为什么会这样呢?
遇到这个问题,我们需要清楚一个事情,在cmd下运行java命令时,系统首先会去windows的System32文件夹下去找java.exe如果找到就运行,这里其实和注册表也是有关系的,(我的注册表写的是1.8但是system32下面还是1.7的java.exe,然后它提示注册表那里有问题,);然后再根据配置的java环境变量去找,找到即运行。如果经过这2步还没找到就会提示最常见的一个错误提示:xxxx 不是内部或外部命令,也不是可运行的程序或批处理文件。这时候应该看看这两个地方,一般是path的问题。
在这个问题的背后,我们需要知道的是,我们的path设置的JDK路径到底有什么用,我们配置的是运行环境,而实际上编译的时候会走system32下面的java.exe去编译,系统默认的是走system32下面的东西。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值