关键在于用专业工具实现即时生效:windows用scoop(scoop reset命令自动更新path与java_home)、macos/linux用jenv(项目级自动识别)、linux服务器用update-alternatives,再同步ide和构建工具配置。

直接切 JDK 版本,关键不是“装多少个”,而是“怎么让系统和工具立刻认准你要用的那个”。手动改环境变量太慢、易错、要重启终端,真正高效的方式是用对应系统的专业管理工具。
Windows:用 Scoop 一键切换
它不碰注册表,所有 JDK 统一装在 scoop\apps 下,PATH 和 JAVA_HOME 自动更新,切完即生效。
- 以管理员身份打开 PowerShell,运行:
iwr -useb get.scoop.sh | iex - 添加 Java 仓库:
scoop bucket add java - 安装多个版本(例如):
scoop install temurin8jre temurin17jre temurin21jre - 切换 JDK 17:
scoop reset temurin17jre→ 当前终端 + 所有新开终端都立即使用 JDK 17 - 卸载某版本也很干净:
scoop uninstall temurin8jre
macOS / Linux:用 jenv 做项目级自动识别
jenv 不改全局默认,只在当前 shell 或项目目录生效。进老项目自动切 JDK 8,进新项目自动切 JDK 17,IDE 和终端都同步。
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
- macOS 安装:
brew install jenv - 把已装的 JDK 加入管理(路径要准确):
jenv add /Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Homejenv add /Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home - 设全局默认(可选):
jenv global 17.0 - 进 Spring Boot 2.x 项目目录,执行:
jenv local 1.8→ 自动生成.java-version,下次cd进来就自动切回 JDK 8 - 查看当前激活版本:
jenv versions(带星号 * 的就是当前生效的)
Linux 服务器(无图形界面):用 update-alternatives 脚本化管理
适合 CI/CD 或生产环境,命令行驱动、可写进部署脚本、权限可控。
- 假设 JDK 已解压到
/usr/lib/jvm/:sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk8/bin/java 100sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk17/bin/java 200 - 交互式切换:
sudo update-alternatives --config java→ 按提示编号选择 - 非交互式指定(适合自动化):
sudo update-alternatives --set java /usr/lib/jvm/jdk17/bin/java
别忘了 IDE 和构建工具也要对齐
光终端切了还不够。IntelliJ IDEA、Maven、Gradle 都有自己的 JDK 设置,它们不读系统 PATH,而是依赖各自配置:
- IDEA:File → Project Structure → Project SDK(选对应 JDK)、Project language level、Modules language level
-
Maven:检查
pom.xml中maven-compiler-plugin的source和target,再确认 Maven Runner 使用的 JRE 是否匹配 -
Gradle:在
gradle.properties或build.gradle中设置java.toolchain,或通过org.gradle.java.home指定 JVM
不复杂但容易忽略。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










