最近新接手一个项目。启动的时候,发现有些jar和现在正在使用的JDK版本不一致,一直启动有问题。想着就多装一个JDK。由于为了保证java的运行环境和编译环境保持一致,就需要我们设置jdk的环境变量。(安装JDK和配置环境变量的方法可以参考),多个JDK,就涉及到JDK环境变量的切换问题。
- WIN10系统
- JDK1.8
JDK8的下载目录:
Java Archive Downloads - Java SE 8
Java Archive Downloads - Java SE 8u211 and later
这里可以搜其他任意版本的JDK:Java Archive | Oracle
多个JDK的切换困境
当我们安装JDK的时候,无论哪个版本,最后一定要设置环境变量。需要新建一个Key-Value键值对,[JAVA_HOME] : [JDK的安装路径]。然后在Path的环境变量中,追加%JAVA_HOME%\bin;
***********************************************************************************************
只有一个JDK的时候,设置一遍就好了。
***********************************************************************************************
但是当安装有多个JDK的时候,就涉及到了JDK版本的切换问题。切换版本最快最常规的方法,就是替换JAVA_HOME对应的JDK安装路径。这种方式,切换一次,可能只需要找到JDK的安装路径,复制粘贴到JAVA_HOME后面就行了,但是如果有频繁切换的需求,来回复制粘贴安装路径的话,就有点乏味和不够方便了
怎么去解决这种问题呢? 让我们切换JDK版本的时候,不用再去找有哪几个JDK,以及不用再去复制它们的安装路径
这里我以我本地三个不同版本的JDK来做示范
1、安装多个JDK
下面是我的jdk的安装路径,总共有三个JDK
2、创建环境变量
首先我们对三个路径,分别配置了三个单独的环境变量。分别是JAVA_HOME7、JAVA_HOME8、JAVA_HOME8_241。如下所示
我们再新建一个环境变量,就叫JAVA_HOME,值就设置成%JAVA_HOME8_241%或%JAVA_HOME8%或%JAVA_HOME7%
3、切换JDK版本
当我们把JAVA_HOME的值设置成%JAVA_HOME8_241%的时候,就意味着将JAVA_HOME8_241 的路径映射给JAVA_HOME ,也就是说,此时JAVA_HOME 就等同于JAVA_HOME8_241,打印如下
此时二者指向同一个路径,此时path中仍然可以使用JAVA_HOME来进行配置
那么每次需要切换JDK版本的时候,就只需要更改JAVA_HOME的引用值就可以
需要JDK1.7的时候,就改成JAVA_HOME = %JAVA_HOME7%
需要JDK1.8的时候,就改成JAVA_HOME = %JAVA_HOME8%
这样子做,其实就是将不同版本JDK的安装路径先赋值给了变量。每次切换的时候,只需要修改变量名就行。不用再复制粘贴路径了
另外还有一个问题
安装的过程中发现。如果已经安装了JDK1.8,再安装JDK1.7的时候,即便更换了JAVA_HOME的值,使用Java -version查询版本,发现并不生效,这种情况呢,网上有很多解决办法。大多都说是删除C:\Windows\System32目录下的java.exe、javaw.exe、javaws.exe三个文件。
他人的解决方案:
但是经过实践发现。其实完全可以不用删除上面那三个文件!!
原因是系统在读取Path的环境变量时,是存在优先级的。谁在前,谁的优先级就高。
我们可以打开Path,看看我们自己写的%JAVA_HOME%\bin是不是在下面这个配置的后面
C:\Program Files (x86)\Common Files\Oracle\Java\javapath;
如果是,那就将这两个调整一下位置,将%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;写在上面这个配置之前就可以了。这样,系统就会优先读取,JAVA_HOME中配置的JDK路径了。上面的java.exe、javaw.exe、javaws.exe三个文件就不用删除。
如果不确定自己的java.exe、javaw.exe、javaws.exe三个文件的位置,那就将JAVA_HOME的配置信息写在最前面。
这个时候你再随意切换1.7和1.8 ,应该就没问题了。