最轻量可靠的方式是统一用 java_home 控制 jdk 版本,path 中仅含 %java_home%\bin;windows 用批处理切换,linux/macos 推荐 sdkman;ide 和构建工具支持项目级配置,无需修改系统环境变量。

统一用 JAVA_HOME 控制版本
不要在 PATH 里硬写多个 JDK 的 bin 路径(比如 C:\jdk\jdk8\bin 和 C:\jdk\jdk21\bin),否则系统会按顺序匹配,导致 java -version 和 javac -version 不一致。
正确做法是:
- 为每个 JDK 创建专属变量,如 JAVA_8_HOME、JAVA_21_HOME,值为对应安装路径
- 只维护一个 JAVA_HOME,值设为 %JAVA_21_HOME% 或 %JAVA_8_HOME%
- PATH 中只保留一行:%JAVA_HOME%\bin(放在靠前位置,但不用第一)
Windows 下一键切换:用批处理脚本
每次进「环境变量」界面修改太慢。推荐写两个 `.bat` 文件放在桌面:
@echo off
setx JAVA_HOME "%JAVA_8_HOME%" /M
echo JDK 8 activated. Restart CMD to apply.
@echo off
setx JAVA_HOME "%JAVA_21_HOME%" /M
echo JDK 21 activated. Restart CMD to apply.
双击运行后,**必须新开一个 CMD 窗口**再验证,因为环境变量对已打开的终端不生效。
Linux/macOS 推荐用 SDKMAN
一行安装,自动管理:
curl -s "https://get.sdkman.io" | bash
之后就能:
- sdk list java — 查看可用版本
- sdk install java 17.0.12-tem — 安装指定版本
- sdk use java 17.0.12-tem — 当前终端生效
- sdk default java 17.0.12-tem — 设为全局默认
IDE 内部切换不依赖系统环境
IntelliJ IDEA 或 Eclipse 支持项目级 JDK 配置,不影响命令行:
- IntelliJ:File → Project Structure → Project SDK → 添加并选择不同 JDK
- Eclipse:Preferences → Java → Installed JREs → Add → 指向各版本 home 目录
- Maven/Gradle 构建时也会读取项目配置,无需改系统变量











