一台电脑可同时安装多个Java版本,需通过合理配置JAVA_HOME、PATH环境变量或使用SDKMAN!、jenv等工具实现按需切换;IDE和构建工具支持项目级JDK绑定,确保多版本共存且互不干扰。

一台电脑上可以同时安装多个Java版本,关键在于合理管理JAVA_HOME、PATH环境变量,并借助工具快速切换——不冲突、不覆盖、按需调用。
手动配置多版本共存(Windows/macOS/Linux通用)
核心思路是:每个JDK独立安装到不同目录,不依赖系统默认路径;通过修改环境变量指向当前需要的版本。
- 下载不同版本JDK(如JDK 8u292、JDK 11.0.15、JDK 17.0.2),分别解压/安装到无空格、无中文的路径,例如:
C:\jdk8、C:\jdk11、/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home - 设置一个统一的环境变量名(如
JAVA_HOME_8、JAVA_HOME_11、JAVA_HOME_17)分别指向各版本根目录 - 主
JAVA_HOME留空或设为占位值,PATH中写成%JAVA_HOME%\bin(Windows)或$JAVA_HOME/bin(macOS/Linux)——后续靠切换JAVA_HOME值生效 - 每次切换时,只需重新赋值
JAVA_HOME并刷新终端/命令行即可,例如在Windows PowerShell中运行:
$env:JAVA_HOME="C:\jdk11"
用SDKMAN!一键管理(推荐 macOS/Linux 用户)
SDKMAN! 是专为开发工具链设计的版本管理器,对Java支持最成熟,安装、切换、卸载全命令行操作,几乎零配置。
- 安装SDKMAN!:
curl -s "https://get.sdkman.io" | bash,然后重启终端或运行source "$HOME/.sdkman/bin/sdkman-init.sh" - 查看可用Java版本:
sdk list java - 安装指定版本(如Zulu JDK 11):
sdk install java 11.0.22-zulu - 设为默认版本:
sdk default java 11.0.22-zulu - 临时切换当前终端版本:
sdk use java 17.0.9-tem
Windows用户可用JEnv或PowerShell脚本简化切换
Windows原生不支持jenv,但可通过轻量脚本模拟类似体验,避免反复改系统环境变量。
立即学习“Java免费学习笔记(深入)”;
- 新建几个批处理文件,例如use-jdk8.bat内容为:
set JAVA_HOME=C:\jdk8
set PATH=%JAVA_HOME%\bin;%PATH%
java -version - 将这些脚本放在常用路径下,双击运行即刻切换当前窗口的Java版本
- 更进一步可配合VS Code或IDEA的项目级SDK配置——每个项目单独指定JDK,与系统环境解耦
IDE和构建工具的独立适配很重要
即使系统级Java版本固定,现代开发环境也支持项目粒度的JDK绑定,这才是多版本共存的实际落地点。
- IntelliJ IDEA:File → Project Structure → Project Settings → Project → SDK,选择已安装的任意JDK
- Eclipse:Preferences → Java → Installed JREs → Add…,添加多个JRE/JDK路径,再在项目属性中指定
- Maven:通过
maven-compiler-plugin的source和target控制字节码级别,与运行时JDK分离 - Gradle:在
build.gradle中配置java.toolchain.languageVersion = JavaLanguageVersion.of(17)










