一台电脑切换多个jdk版本的关键是清干扰、建变量、动java_home:先删oracle注入的幽灵路径,再为各版本建专用变量如java_8_home,最后用%java_8_home%等动态设置java_home并精简path为%java_home%\bin,改后需新开终端验证。

一台电脑切换多个 JDK 版本,核心不是装几个,而是让系统“认得清、切得快、不冲突”。关键动作就三步:清干扰、建变量、动 JAVA_HOME。改完不用重启电脑,但必须新开终端验证。
先清除 Oracle 偷加的“幽灵路径”
这是 90% 切换失败的根源。Oracle 官方安装包(.exe)会悄悄在系统 Path 最顶端插入两条路径:
- C:\Program Files\Common Files\Oracle\Java\javapath
- C:\Program Files (x86)\Common Files\Oracle\Java\javapath
这两条里放着一个代理 java.exe,它永远优先于你配的 JAVA_HOME。必须手动进入「环境变量 → Path」,找到并彻底删除它们。
统一安装路径 + 建立版本专用变量
把所有 JDK 解压或安装到同一父目录下,比如:
D:\jdk\jdk8
D:\jdk\jdk11
D:\jdk\jdk17
D:\jdk\jdk21
然后在「系统变量」中新建(名称不含空格和中文):
- JAVA_8_HOME = D:\jdk\jdk8
- JAVA_11_HOME = D:\jdk\jdk11
- JAVA_17_HOME = D:\jdk\jdk17
- JAVA_21_HOME = D:\jdk\jdk21
这样路径只写一次,后续任何地方引用都用变量名,避免手误和重复修改。
用 JAVA_HOME 动态指向 + Path 精简引用
JAVA_HOME 是系统识别 JDK 的唯一依据。不要填死路径,而是填变量引用:
- 新建或编辑系统变量 JAVA_HOME,值设为:%JAVA_17_HOME%
- 检查系统变量 Path 中是否只有且仅有一条 Java 相关路径:%JAVA_HOME%\bin
- 删掉所有类似 C:\Program Files\Java\jdk1.8.0_301\bin 这样的硬编码路径
- 确保 %JAVA_HOME%\bin 在 Path 列表中排在最顶端
改完后,必须新开一个 CMD 或 PowerShell 窗口,再运行 java -version 验证——旧窗口会缓存旧变量。
一键切换:写个管理员权限批处理脚本
每次点进环境变量太慢?建两个 .bat 文件放在桌面:
switch_to_jdk8.bat:
@echo off setx JAVA_HOME "%JAVA_8_HOME%" /M echo 已切换至 JDK 8 pause
switch_to_jdk21.bat:
@echo off setx JAVA_HOME "%JAVA_21_HOME%" /M echo 已切换至 JDK 21 pause
右键以“管理员身份运行”,提示执行成功后,新开终端即可生效。注意:/M 表示修改系统级变量,普通运行无效。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











