在 Windows 中同时安装多个 JDK
最近进行开发的时候, 遇到了一些不同 JDK
版本的需求: Spring Boot 2
的开发框架 eladmin-plus
只能使用 JDK 8
; 新版本的 Flutter SDK
配置 Android Toolchain
时最低要求 JDK 11
; 而最新版的 Spring Boot
最低的 JDK
版本是 JDK 17
。
想在同一台电脑完成上面的开发, 比较好的作法当然是在一台电脑上安装多个版本的 JDK
, 根据需要随时进行切换。
安装版和解压版 JDK
安装版的 JDK
会添加一些环境变量到电脑中, 如果这些环境变量不进行处理, 会对切换后的其他版本JDK
造成影响, 所以在 Windows
中同地安装多个版本的 JDK
时, 建议使用解压版
。
现在 Oracle
已经不提供解压版的JDK
了, 所以要自己进行制作。
制作解压版的 Oracle JDK
下载安装各版本
JDK
(例如JDK 8
,JDK11
,JDK17
等) 的安装程序
运行
安装程序
, 参考下图
的步骤, 复制JDK
到另一个位置
复制出来的就是我们需要的解压版
JDK
, 复制成功后,取消
当前JDK
的继续安装。重复以上步骤获取其他版本的
JDK
文件
可以把其他电脑已经安装好的
JDK文件夹
复制出来使用即可
Open JDK
- 另一种选择
Open JDK
大部分都是解压版, 如果可以接受 Open JDK
的话, 则直接下载回来解压就可以使用了。 比如Microsoft
维护的 OpenJDK
:
https://learn.microsoft.com/zh-cn/java/openjdk/download
如果电脑有安装 Android Studio
, 会自带有一个 OpenJDK
, 也可以把这个 JDK
复制出来使用。
我在当前电脑准备了四个解压版本的JDK
, 将其放在 d:\AppData
文件夹下, 解压版的软件在重装操作系统后也可以直接使用, 所以放在D盘
的文件夹比较好, 如下图:
jdk1.8.0_333
: 使用安装程序
按照上面制作方法复制出来的Oracle JDK 8
, 将复制出来的文件夹改名;openjdk1.8.0_242
: 旧版Android Studio 3.5
自带的OpenJDK
, 将其安装文件夹的jre
文件夹复制出来并改名;openjdk11.0.12
:Android Studio 2020.3.1
自带的OpenJDK
, 将其安装文件夹的jre
文件夹复制出来并改名;openjdk17.0.2
: 直接从Microsoft
下载并解压并改名的OpenJDK
之所以有这么多个, 只是为了把获取解压版
JDK
的方法都试一次
系统环境变量设置
编辑系统环境变量 path
, 添加以下两个值:
%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin
如下图所示:
使用或切换不同版本的 JDK
以上已经准备好的四个JDK
的路径分别为:
D:\AppData\jdk1.8.0_333
D:\AppData\openjdk1.8.0_242
D:\AppData\openjdk11.0.12
D:\AppData\openjdk17.0.2
只需要将相应的路径添加到系统环境变量 JAVA_HOME
中即可使用该版本的 JDK
。
为更方便进行切换, 可以使用命令
的方式来添加或修改环境变量的值, 命令格式: setx "环境变量名" "环境变量值"
使用管理员权限
打开 CMD窗口
或 PowerShell窗口
,执行以下命令:
1 | setx "JAVA_HOME" "D:\AppData\openjdk17.0.2" /m |
命令行后的参数
/m
表示添加为系统
环境变量, 没有该参数量为用户
环境变量
只需要将
D:\AppData\openjdk17.0.2
替换为其他路径并重复执行以上命令即可实现JDK
版本的切换
切换版本后, 要在
新打开的命令窗口
中才能查看到切换后java
版本
命令执行结果如下所示:
1 | PS C:\Users\hujy> setx "JAVA_HOME" "D:\AppData\openjdk17.0.2" /m |
已经添加成功的 JAVA_HOME
环境变量
查看 Java
版本信息
1 | PS C:\Users\hujy> java -version |