可以的,Ubuntu 完全支持同时安装多个 Java 版本,而且这是很常见的做法。下面给你几种常用、推荐的方式,从简单到更专业。
update-alternatives(官方/常用)Ubuntu 自带一套“多 Java 版本管理”机制。
例如同时安装 Java 8 和 Java 17:
sudo apt update
sudo apt install openjdk-8-jdk
sudo apt install openjdk-17-jdk
你也可以混装:
update-alternatives --list java
示例输出:
/usr/lib/jvm/java-8-openjdk-amd64/bin/java
/usr/lib/jvm/java-17-openjdk-amd64/bin/java
sudo update-alternatives --config java
输出示例:
有 2 个候选项可用于替换 java (提供 /usr/bin/java)
选择 路径 优先级 状态
------------------------------------------------------------
* 0 /usr/lib/jvm/java-17-openjdk-amd64/bin/java 1711 自动模式
1 /usr/lib/jvm/java-8-openjdk-amd64/bin/java 1081 手动模式
2 /usr/lib/jvm/java-17-openjdk-amd64/bin/java 1711 手动模式
Press <enter> to keep the current choice[*], or type selection number:
选数字即可切换。
javacsudo update-alternatives --config javac
不修改系统默认 Java,而是:
JAVA_HOMEexport JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
适合:
mvn -Dmaven.compiler.release=8 clean package
或在 pom.xml 中指定。
如果你经常切换 Java 版本,SDKMAN 是最舒服的方案。
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install java 8.0.392-tem
sdk install java 17.0.9-tem
sdk use java 8.0.392-tem
sdk default java 17.0.9-tem
✅ 不影响系统 Java
✅ 支持 Oracle / OpenJDK / GraalVM / Temurin 等
| 方式 | 适合人群 | 是否推荐 |
|---|---|---|
update-alternatives |
系统级、服务器 | ⭐⭐⭐⭐ |
手动 JAVA_HOME |
项目级 | ⭐⭐⭐ |
| SDKMAN | 开发者 | ⭐⭐⭐⭐⭐ |
Ubuntu 可以同时安装多个 Java,而且非常安全、常见。
推荐:
- 服务器 →
update-alternatives- 开发 → SDKMAN
如果你愿意,我可以帮你: