核心是通过动态变量JAVA_HOME指向不同JDK目录实现版本切换:先安装多个JDK到无空格路径,设置JAVA8_HOME等锚点变量,再将JAVA_HOME设为对应%变量%,并在Path顶部添加%JAVA_HOME%\bin,切换时仅修改JAVA_HOME值即可。

核心是用一个“主变量”动态指向不同 JDK,再让系统命令和工具都依赖它——不是硬编码路径,而是靠引用切换。
准备多个 JDK 安装目录
先下载并安装你需要的版本,比如 JDK 8、JDK 17、JDK 21。注意:
- 安装路径尽量不带空格和中文(推荐如 C:\jdk8、C:\jdk17、C:\jdk21)
- 每个版本单独解压或安装到不同文件夹,不要覆盖
- 记下每个完整路径,后续配置要用
设置版本专用环境变量
在系统变量中新建几个“固定路径变量”,作为各版本的锚点:
- JAVA8_HOME → C:\jdk8
- JAVA17_HOME → C:\jdk17
- JAVA21_HOME → C:\jdk21
这些变量本身不参与命令调用,只用来被引用,命名清晰、不易混淆。
立即学习“Java免费学习笔记(深入)”;
配置主切换变量 JAVA_HOME
新建或修改系统变量 JAVA_HOME,值设为:
%JAVA17_HOME%(默认用哪个就填哪个)
这是整个切换机制的枢纽。所有依赖 JAVA_HOME 的工具(Maven、Tomcat、IDEA、Gradle)都会读它。
调整 Path 并确保优先级
编辑系统变量 Path,在最顶部新增一行:
%JAVA_HOME%\bin
- 必须放在 Path 列表最上方,否则可能被旧 JDK 或系统自带 java 覆盖
- 不要手动写死路径,一定要用 %JAVA_HOME%\bin
- 删掉 Path 中其他 JDK 的 bin 路径(如 C:\Program Files\Java\jdk1.8.0_XXX\bin),避免冲突
改完后,新开一个 CMD 或 PowerShell 窗口验证:
java -versionjavac -version
切换版本只需改一个地方
要切到 JDK 8?把 JAVA_HOME 的值从 %JAVA17_HOME% 改成 %JAVA8_HOME%
要切到 JDK 21?改成 %JAVA21_HOME%
改完保存,关掉所有终端,重新打开再执行 java -version 即可生效。
不复杂但容易忽略


















