jdk1.6,jdk1.7,jdk1.8安装共存问题。

        一次心血来潮,决心研究一下,电脑上面安装3个版本的JDK,于是开始了测试,其实也不能说是安装3个版本的,1.6版本的是公司给的压缩包形式的,1.7和1.8版本的是我自己在电脑上面安装的,首先遇到的问题就是,当1.7安装好以后,(1.7的安装的环境变量配置自行百度吧)我是用cmd查看java -version,    首先说明,我的Path路径设置的是1.6版本的。


遇到上面的问题,有的人可能会疑惑,为什么我配置的1.6,在我没安装1.7版本的时候,我设置path是1.6,java -version它显示的是1.6。当我安装了1.7 它显示的是1.7。这个问题,需要清楚的知道一个编译和运行时他们是不一样的,这个问题,后面讲述。

当我安装1.8版本的时候,安装成功了,再次使用java -version 的时候出现了下面的情况


上面的问题的大概意思就是,我需要的是1.7,你现有的是1.8,然后计算机就懵逼了,不知道怎么搞了。

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

出现上面的问题后,我就到system32下面把java.exe,javaw.exe以及javaws.exe删除了,然后又把自己安装的1.8JDK的这三个程序放到system32下面


放完以后再次打开cmd 运行 java -version 出现了最终的结果。


       在这个问题的背后,我们需要知道的是,我们的path设置的JDK路径到底有什么用,我们配置的是运行环境,而实际上编译的时候会走system32下面的java.exe去编译,系统默认的是走system32下面的东西。

     我们使用eclipse,myeclipse的时候,eclipse默认使用path里面的运行,使用默认的system32里面的程序去编译,当path路径和system32里面(也就是注册表,前提是你的注册表和system32里面的版本相对应)不一样的时候,eclipse就会报错,code=13这个错误,绝决办法就是,把你的path里面的javahome路径清除,eclipse会自动寻找注册表里面的运行环境。myeclipse默认使用自带的,我们可以自己修改。我们通常听到的修改jdk,其实就是指定它的运行和编译。由于目前知识有限,有不对的地方欢迎指正。




你可能感兴趣的:(jdk)