在Java开发过程中,经常会遇到不同项目依赖不同JDK版本的情况,比如老项目需要JDK8,新项目要用JDK17,这时候就需要在一台设备上安装并配置多个JDK版本,并且能灵活切换使用。掌握JDK多版本的管理方法,能有效避免环境冲突,提升开发效率。

Windows系统下JDK多版本安装配置
第一步:下载并安装多个JDK版本
首先到Oracle官网或者OpenJDK官网下载需要版本的JDK安装包,比如JDK8和JDK17的安装包。运行安装程序时,注意选择不同的安装目录,避免版本文件相互覆盖。比如JDK8可以安装到C:Javajdk1.8.0_301,JDK17安装到C:Javajdk-17.0.1。
第二步:配置多版本环境变量
Windows的环境变量配置核心是为每个JDK版本单独设置变量,再通过主变量指向当前要使用的版本。首先新建两个系统变量:
- JAVA8_HOME:变量值设为JDK8的安装路径
C:Javajdk1.8.0_301 - JAVA17_HOME:变量值设为JDK17的安装路径
C:Javajdk-17.0.1
然后新建或者编辑系统变量JAVA_HOME,变量值设置为%JAVA8_HOME%或者%JAVA17_HOME%,需要切换版本时直接修改这个变量值即可。最后在系统变量Path中添加%JAVA_HOME%bin,注意不要保留之前单独添加的JDK路径。
第三步:验证配置是否生效
打开命令提示符,执行以下命令查看当前JDK版本:
java -version
如果输出的版本和当前JAVA_HOME指向的版本一致,说明配置成功。如果需要切换版本,只需要修改JAVA_HOME的引用值,再重新打开命令提示符验证即可。
Linux系统下JDK多版本安装配置
第一步:解压安装多个JDK版本
将下载好的JDK压缩包上传到Linux服务器,比如放到/usr/local/java目录下,分别解压不同版本的压缩包:
# 解压JDK8 tar -zxvf jdk-8u301-linux-x64.tar.gz # 解压JDK17 tar -zxvf jdk-17.0.1_linux-x64_bin.tar.gz
解压后目录结构类似/usr/local/java/jdk1.8.0_301和/usr/local/java/jdk-17.0.1。
第二步:使用alternatives命令管理多版本
Linux系统提供了alternatives工具来管理多版本软件,我们可以通过这个工具注册多个JDK版本:
# 注册JDK8 sudo alternatives --install /usr/bin/java java /usr/local/java/jdk1.8.0_301/bin/java 1 sudo alternatives --install /usr/bin/javac javac /usr/local/java/jdk1.8.0_301/bin/javac 1 # 注册JDK17 sudo alternatives --install /usr/bin/java java /usr/local/java/jdk-17.0.1/bin/java 2 sudo alternatives --install /usr/bin/javac javac /usr/local/java/jdk-17.0.1/bin/javac 2
命令最后的数字是优先级,数字越大优先级越高,也可以后续手动选择版本。
第三步:切换并验证版本
执行以下命令选择要使用的JDK版本:
# 切换java命令版本 sudo alternatives --config java # 切换javac命令版本 sudo alternatives --config javac
执行命令后会列出所有已注册的JDK版本,输入对应序号即可完成切换。切换后执行java -version验证版本是否正确。
多版本管理常见问题
版本切换后不生效
Windows系统下修改环境变量后,需要重新打开命令提示符窗口才能生效,已经打开的窗口不会同步新的环境变量。Linux系统下如果用了alternatives切换,执行source ~/.bashrc或者重新登录终端即可。
项目指定JDK版本
如果是用Maven或者Gradle构建的项目,可以在构建工具配置中指定项目使用的JDK版本,不需要全局切换。比如Maven的pom.xml中可以添加如下配置:
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
这样项目编译运行时会自动使用指定的JDK版本,不受全局环境的影响。