在 Java 开发中,我们经常会遇到多项目兼容的场景:老项目依赖 Java 8,新项目使用 Java 17/21。Ubuntu 系统支持同时安装多个 OpenJDK 版本,无需卸载旧版本,通过系统自带工具就能一键切换默认 JDK,完美解决版本冲突问题。
本文手把手教你:在 Ubuntu 上安装多个 OpenJDK → 切换默认版本 → 配置环境变量 → 卸载冗余版本,新手也能轻松上手!
一、前置检查:查看已安装的 JDK
首先检查系统当前的 JDK 状态,确认是否已安装过 OpenJDK:
1. 查看当前默认 JDK 版本
bash
运行
java -version
2. 列出所有已安装的 OpenJDK 包
bash
运行
dpkg -l | grep openjdk
如果输出为空,说明系统未安装任何 JDK,直接跳转到第二步安装即可。
二、安装多个 OpenJDK 版本
我们以最常用的 OpenJDK 8 和 OpenJDK 17 为例,执行命令一键安装:
1. 更新软件源
bash
运行
sudo apt update
2. 安装多版本 JDK
bash
运行
# 安装 Java 8 和 Java 17 完整开发包(包含编译器 javac)
sudo apt install openjdk-8-jdk openjdk-17-jdk -y
✅ 小贴士:推荐安装 jdk 而非 jre,jdk 包含编译、运行全套工具,满足开发需求。
安装完成后,系统会自动将两个 JDK 注册到版本管理工具中。
三、核心操作:一键切换默认 JDK
Ubuntu 自带 update-alternatives 工具,专门用于管理系统中同一软件的多版本,无需手动修改环境变量,这是切换 JDK 最便捷的方式!
1. 切换 Java 运行时版本
执行以下命令,系统会列出所有已安装的 JDK:
bash
运行
sudo update-alternatives --config java
命令输出示例:
plaintext
有 2 个候选项可用于替换 java (提供 /usr/bin/java)。
选择 路径 优先级 状态
------------------------------------------------------------
* 0 /usr/lib/jvm/java-17-openjdk-amd64/bin/java 1711 自动模式
1 /usr/lib/jvm/java-17-openjdk-amd64/bin/java 1711 手动模式
2 /usr/lib/jvm/java-8-openjdk-amd64/bin/java 1081 手动模式
要维持当前值[*],请按<回车键>,或者输入选择的编号:
切换方法:
输入你想设置为默认的 JDK 序号(比如输入 2 切换为 Java 8),按回车即可。
2. 必须切换:Java 编译器版本
java 是运行命令,javac 是编译命令,两个都要切换,否则会出现「运行新版本、编译旧版本」的问题:
bash
运行
sudo update-alternatives --config javac
操作方式和上面完全一致!
四、验证切换结果
切换完成后,执行命令检查版本是否一致:
bash
运行
# 查看运行时版本
java -version
# 查看编译器版本
javac -version
如果两个命令输出的版本号相同,说明切换成功!🎉
五、进阶配置:设置 JAVA_HOME 环境变量
大部分 Java 框架(Maven、Tomcat、SpringBoot)都依赖 JAVA_HOME 环境变量,我们需要手动配置。
1. 查看 JDK 安装路径
执行命令获取所有 JDK 的实际路径:
bash
运行
update-alternatives --list java
输出示例:
plaintext
/usr/lib/jvm/java-17-openjdk-amd64/bin/java
/usr/lib/jvm/java-8-openjdk-amd64/bin/java
✅ JAVA_HOME 路径 = 去掉末尾 /bin/java 的部分:
- Java 8:
/usr/lib/jvm/java-8-openjdk-amd64 - Java 17:
/usr/lib/jvm/java-17-openjdk-amd64
2. 配置环境变量(用户级,推荐)
仅对当前用户生效,安全无风险:
bash
运行
# 编辑用户配置文件
nano ~/.bashrc
在文件末尾添加以下内容(以 Java 8 为例):
bash
运行
# 配置 JAVA_HOME
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
# 将 JDK 命令加入系统 PATH
export PATH=$JAVA_HOME/bin:$PATH
按 Ctrl+O 保存,Ctrl+X 退出,执行命令生效:
bash
运行
source ~/.bashrc
3. 验证 JAVA_HOME
bash
运行
echo $JAVA_HOME
输出你配置的路径,说明生效成功!
六、卸载不需要的 JDK 版本
如果某个 JDK 不再使用,直接卸载即可,系统会自动更新版本配置:
bash
运行
# 卸载 OpenJDK 8(替换为你要卸载的版本)
sudo apt remove openjdk-8-jdk -y
七、常见问题排查
1. 切换后版本没有变化?
- 重新打开终端,再执行
java -version检查; - 如果配置了环境变量,重新执行
source ~/.bashrc。
2. javac 和 java 版本不一致?
忘记切换编译器!重新执行:
bash
运行
sudo update-alternatives --config javac
3. JAVA_HOME 不生效?
检查路径是否正确,绝对不能包含 /bin/java,重新编辑配置文件并生效。
总结
Ubuntu 管理多版本 OpenJDK 超简单,核心就 3 步:
- 用
apt install安装多个 JDK; - 用
update-alternatives --config java/javac一键切换; - 配置
JAVA_HOME适配开发框架。
这套方法适用于所有 Ubuntu 版本(20.04/22.04/24.04),彻底解决多项目 JDK 版本冲突问题!