Windows 下多版本 JDK 配置教程:一键切换环境,告别路径冲突
在日常 Java 开发中,我们常常会遇到「不同项目依赖不同 JDK 版本」的场景 —— 比如老项目需要 JDK 8 兼容,新业务又要用到 JDK 25 的新特性。直接修改环境变量不仅繁琐,还容易出现版本冲突、命令找不到的问题。这篇教程会手把手教你在 Windows 系统中配置多个 JDK 版本,核心目标是:
- 让系统能正常识别并调用 JDK 25 的
java/javac命令; - 无需反复修改环境变量界面,一键切换 JDK 8 和 JDK 25;
- 从根源避免多版本 JDK 的路径冲突问题
一、下载并安装多版本 JDK
1.首先前往 Oracle 官网下载需要的 JDK 版本
目前开发中常用的版本有:
- JDK 8(也常写作 jdk1.8,经典长期支持版本,兼容大部分老项目);
- JDK 11、JDK 17、JDK 21/25(新一代长期支持版本,适配新特性开发)。
小建议:优先选择「自动安装版」(.exe 格式),比解压版更省心,无需手动配置解压路径。

2.下载后安装到独属的固定位置文件夹,这里安装到C:\jdk文件夹
一个文件夹是C:\jdk\jdk8
一个文件夹是C:\jdk\jdk21

3.先安装 jdk 8,再安装jdk 21
安装时修改上述自定义路径
4.配置系统环境变量
步骤 1:新增 JDK 版本专属变量(方便切换):
- 新建变量:
JAVA_8_HOME,值填 JDK 8 的安装路径(比如C:\jdk\jdk8 ); - 新建变量:
JAVA_21_HOME,值填 JDK 21 的安装路径(比如C:\jdk\jdk21);
步骤 2:修改 / 新建 JAVA_HOME(核心切换变量):
- 若没有
JAVA_HOME,新建
若已有 JAVA_HOME,修改它的值为%JAVA_25_HOME% 或者%JAVA_8_HOME%都可

步骤 3:确保 PATH 里的 Java 路径是 “动态的”:
- 找到系统变量中的
PATH变量,编辑,确保里面有%JAVA_HOME%\bin(优先级高,但最好不要放到前三个之前),删掉原来直接写死的 JDK 8 路径(比如 C:\ProgramFiles\Java\jdk1.8.0_xxx\bin`);

注意!!配置完成后环境变量的三个界面都要点击确定
5.验证配置是否成功
打开新的命令提示符(cmd),输入命令验证:
# 查看当前使用的 JDK 版本 java -version # 查看编译器版本(javac 只在 JDK 里有,JRE 没有) javac -version
- 若显示
java version "25.x.x",说明 JDK 25 配置成功; - 若显示
java version "1.8.0_xxx",说明当前用的是 JDK 8
6.快速切换 JDK 版本(不用改环境变量界面)
步骤 1:显示文件扩展名
打开「此电脑」→ 点击顶部「查看」选项卡;勾选「文件扩展名」
步骤 2:创建「切换到 JDK 8.bat」
- 在桌面空白处右键 →「新建」→「文本文档」;
- 重命名该文件为
切换到 JDK8.bat(注意:后缀是.bat,不是.txt,改名时会提示 “更改扩展名可能导致文件不可用”,点击「是」); - 双击打开这个
.bat文件(用记事本打开),复制粘贴以下内容: @echo off :: 关闭命令回显,让输出更干净 :: 永久修改系统级 JAVA_HOME 为 JDK 8 setx JAVA_HOME "%JAVA_8_HOME%" /m :: 提示用户切换结果 echo ====================================== echo 已将系统 JAVA_HOME 切换为 JDK 8! echo 注意:需关闭所有已打开的 CMD/IDE,重新打开才生效! echo ====================================== :: 暂停窗口,让用户看到提示 pause - 点击记事本「文件」→「另存为」(编码选「ANSI」,避免中文乱码)替换原文本。
步骤 3:创建「切换到 JDK 21.bat」
- 重复步骤 2 的 1-2:在桌面新建文本文档,重命名为
切换到 JDK 25.bat(后缀.bat); - 双击打开,复制粘贴以下内容: @echo off :: 永久修改系统级 JAVA_HOME 为 JDK 25 setx JAVA_HOME "%JAVA_25_HOME%" /m :: 提示用户切换结果 echo ====================================== echo 已将系统 JAVA_HOME 切换为 JDK 25! echo 注意:需关闭所有已打开的 CMD/IDE,重新打开才生效! echo ====================================== :: 暂停窗口,让用户看到提示 pause
- 点击记事本「文件」→「另存为」(编码选「ANSI」,避免中文乱码)覆盖原文本。
7.以管理员身份运行脚本
脚本内代码setx /m 是修改系统级环境变量,需要管理员权限,否则会报错:
- 右键点击桌面的「切换到 JDK 25.bat」→「以管理员身份运行」;
- 按任意键关闭窗口即可。
会弹出命令行窗口,显示:

8.验证切换结果
- !关闭所有已打开的 CMD / 终端 / IDE*(旧窗口会缓存环境变量,修改不生效);
- 重新打开一个新的 CMD(普通身份即可,不用管理员);
- 原因:
JAVA_8_HOME/JAVA_25_HOME配置错误,或路径里有空格 / 中文; - 解决:
- 重新检查环境变量里的
JAVA_8_HOME/JAVA_25_HOME,确保路径是 JDK 根目录(比如C:\Program Files\Java\jdk-25,不是C:\Program Files\Java\jdk-25\bin); - 若路径有空格(比如
Program Files),可以给路径加引号,比如把脚本里的%JAVA_8_HOME%改成"C:\Program Files\Java\jdk1.8.0_202"。
- 重新检查环境变量里的
- 原因:
- 原因:没有以管理员身份运行脚本;
- 解决:右键脚本 →「以管理员身份运行」。
- 原因:没关闭旧 CMD/IDE,或
PATH里%JAVA_HOME%\bin优先级不够; - 解决:
- 关闭所有 CMD/IDE,重新打开;
- 检查
PATH变量,把%JAVA_HOME%\bin拖到最顶部。
- 原因:记事本保存时编码不是 ANSI;
- 解决:打开脚本 →「文件」→「另存为」→ 编码选「ANSI」→ 保存。
输入以下命令验证: # 查看 Java 运行时版本 java -version # 查看 Java 编译器版本(JDK 特有,验证是否是完整 JDK) javac -version
常见问题 & 解决方法
问题 1:运行脚本提示「找不到指定的路径」问题 2:运行脚本提示「拒绝访问」问题 3:验证时还是旧版本问题 4:脚本里的中文乱码