最可靠的方式是仅通过java_home控制jdk版本,并确保path中只含%java_home%\bin或$java_home/bin;需避免多个jdk的bin目录共存于path,以防java与javac版本不一致。

直接改 JAVA_HOME 并确保 PATH 里只含 %JAVA_HOME%\bin(Windows)或 $JAVA_HOME/bin(macOS/Linux),是最轻量、最可靠的方式。关键不是多设路径,而是避免多个 JDK 的 bin 目录同时出现在 PATH 中——否则 java -version 和 javac -version 可能不一致。
明确区分版本路径,统一用 JAVA_HOME 控制
每个 JDK 安装到独立目录,例如:
- JDK 8:
C:\Program Files\Java\jdk1.8.0_301(Windows)或/Library/Java/JavaVirtualMachines/jdk1.8.0_301.jdk/Contents/Home(macOS) - JDK 17:
C:\Program Files\Java\jdk-17.0.2或/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
然后为每个版本创建专属环境变量:
-
JAVA_8_HOME→ 指向 JDK 8 根目录 -
JAVA_17_HOME→ 指向 JDK 17 根目录 - 主变量
JAVA_HOME的值设为%JAVA_8_HOME%或%JAVA_17_HOME%(Windows),或$JAVA_8_HOME/$JAVA_17_HOME(macOS/Linux)
PATH 中只保留一行:
- Windows:
%JAVA_HOME%\bin - macOS/Linux:
$JAVA_HOME/bin
且确保它在 PATH 中靠前位置,但不用放在最开头。
Windows 下用批处理一键切换
新建两个 .bat 文件,比如 jdk8.bat 和 jdk17.bat,内容如下:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
@echo off setx JAVA_HOME "%JAVA_8_HOME%" /M echo JDK 8 activated. pause
运行后必须新开一个 CMD 窗口再验证,因为 setx 修改的是系统级变量,对已打开的终端不生效。
macOS/Linux 推荐用 SDKMAN
一行安装:
curl -s "https://get.sdkman.io" | bash source "$HOME/.sdkman/bin/sdkman-init.sh"
常用命令:
-
sdk list java— 查看可用版本 -
sdk install java 17.0.12-tem— 安装 Temurin 17 -
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 home
- Eclipse:Preferences → Java → Installed JREs → Add → 选中 JDK 目录
这样不同项目可各自使用 JDK 8、17 或 21,互不影响。Maven/Gradle 构建时也优先读取项目配置,无需动系统变量。
不复杂但容易忽略
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










