java多版本jdk共存需安装至独立路径,通过java_home指向当前版本并确保其bin目录在path最前,配合sdkman!等工具或脚本快速切换,且ide与maven须单独配置对应版本。

Java 多版本 JDK 共存不是“装多个就自动切换”,而是靠明确的路径管理 + 环境变量控制 + 工具辅助实现。核心在于:每个 JDK 安装到独立目录,用 JAVA_HOME 指向当前要用的版本,并确保 %JAVA_HOME%\bin(Windows)或 $JAVA_HOME/bin(macOS/Linux)排在 PATH 最前面。
一、安装多个 JDK 到固定路径
避免使用默认路径(如 C:\Program Files\Java\jdk-25),防止空格、权限或升级覆盖问题。推荐统一规划:
- Windows:例如
C:\java\jdk8、C:\java\jdk17、C:\java\jdk25 - macOS:例如
/Library/Java/JavaVirtualMachines/jdk-8.jdk/Contents/Home、~/jdk/jdk-25 - Linux:例如
/opt/jdk8、/opt/jdk25
安装时选择「解压版」或手动指定目标路径,确认每个目录下有 bin/java 和 lib 子目录。
二、环境变量分层配置(Windows/macOS/Linux 通用逻辑)
不直接把多个 JDK 的 bin 路径硬塞进 PATH,而是通过中间变量间接控制:
- 新建系统级变量:
JAVA_HOME_8→C:\java\jdk8,JAVA_HOME_17→C:\java\jdk17,JAVA_HOME_25→C:\java\jdk25 - 主变量
JAVA_HOME不设值,或设为占位符(如C:\java\placeholder) - PATH 中只加一行:
%JAVA_HOME%\bin(Windows)或$JAVA_HOME/bin(macOS/Linux)
这样,切换版本只需改 JAVA_HOME 的值为 %JAVA_HOME_8% 或 %JAVA_HOME_25%,再刷新终端即可生效。
三、快速切换方式推荐
手动改环境变量太重,日常开发建议用轻量方法:
-
Windows:写几个 .bat 文件,比如
use-jdk8.bat内容为:@echo off<br>set JAVA_HOME=C:\java\jdk8<br>set PATH=%JAVA_HOME%\bin;%PATH%<br>java -version
-
macOS/Linux:用
/usr/libexec/java_home(macOS 自带):export JAVA_HOME=$(/usr/libexec/java_home -v 17)
或用 SDKMAN!(推荐):sdk use java 25.0.2-tem -
所有系统:在终端启动时加载对应配置,例如在
~/.zshrc中定义函数:jdk8() { export JAVA_HOME=$JAVA_HOME_8; echo "JDK 8 active"; }
四、IDE 和构建工具必须单独配
系统 java -version 正确 ≠ IDE 或 Maven 就用对了版本:
- IntelliJ IDEA:File → Project Structure → Project Settings → Project → SDK,选对应 JDK 根目录
-
VS Code:项目根目录下
.vscode/settings.json加:"java.home": "/path/to/jdk25" -
Maven:检查
pom.xml中<maven.compiler.source></maven.compiler.source>和<maven.compiler.target></maven.compiler.target>,并确认mvn -v显示的 Java 版本与JAVA_HOME一致
项目级配置优先于系统级,这是多版本共存真正落地的关键。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











