可行但需手动配置环境变量才能实现多版本共存与切换:winget安装jdk(如temurin 8/17/21)后,必须新建java_home17、java_home21等变量,设java_home为对应引用,并在path顶部添加%java_home%\bin;还需删除c:\program files\common files\oracle\java\javapath以防覆盖。

Windows 11 上用 winget 安装多个 JDK 版本是可行的,但需注意:winget 默认每次安装会覆盖或注册为系统默认 Java,**不会自动实现多版本共存与切换**。要真正共存,必须配合手动环境变量配置,否则后装的版本会“抢占” java -version 结果。
winget 安装多个 JDK(推荐 Temurin)
Temurin(Eclipse Adoptium)是当前最主流、免费、LTS 支持完善的 OpenJDK 发行版,适合生产与开发。
-
JDK 17(LTS):
winget install EclipseAdoptium.Temurin.17.JDK -
JDK 21(LTS):
winget install EclipseAdoptium.Temurin.21.JDK -
JDK 8(如需兼容旧项目):
winget install EclipseAdoptium.Temurin.8.JDK
⚠️ 注意:winget 安装路径由程序自定(通常在 C:\Program Files\Eclipse Adoptium\...),目录名含版本号和构建信息(如 jdk-17.0.11+9-hotspot)。建议安装后立即记下完整路径,后续配置环境变量必需。
关键清理:删除系统级 javapath 冗余项
winget 或其他安装器可能在以下位置写入全局 Java 快捷方式,导致 java -version 始终返回固定版本,绕过你的 JAVA_HOME 设置:
C:\Program Files\Common Files\Oracle\Java\javapathC:\Program Files (x86)\Common Files\Oracle\Java\javapath
以管理员身份打开 PowerShell,执行:
rmdir /s /q "C:\Program Files\Common Files\Oracle\Java\javapath" rmdir /s /q "C:\Program Files (x86)\Common Files\Oracle\Java\javapath"
这一步不做,多版本切换大概率失效。
环境变量配置:支持自由切换
仅靠 winget 安装不够,必须手动设置变量,才能按需切换:
- 新建系统变量(示例):
JAVA_HOME17 →C:\Program Files\Eclipse Adoptium\jdk-17.0.11+9-hotspot
JAVA_HOME21 →C:\Program Files\Eclipse Adoptium\jdk-21.0.3+9-hotspot - 新建或修改系统变量:
JAVA_HOME → 值设为%JAVA_HOME17%(初始指向你常用版本) - 编辑 Path 系统变量,确保顶部有这两行(顺序很重要):
%JAVA_HOME%\bin%JAVA_HOME%\jre\bin(部分旧版需要,JDK 17+ 可省略 jre 行)
✅ 切换版本时,只需修改 JAVA_HOME 的值为 %JAVA_HOME21%,然后新开一个终端验证:java -version 和 javac -version 就会实时生效。
验证与日常使用建议
每次修改环境变量后,务必打开全新命令行窗口(CMD/PowerShell),旧窗口缓存未刷新。
- 快速检查当前 JDK:
echo %JAVA_HOME%+java -version - IDE(如 IntelliJ IDEA、VS Code)需重启或重新加载项目,才能识别新 JDK
- 构建工具(Maven/Gradle)依赖
JAVA_HOME,无需额外配置
不复杂但容易忽略。winget 负责“装得快”,环境变量负责“切得准”,两者缺一不可。











