在Ubuntu 24.04上需先确认/usr/lib/jvm/下存在java-8/17/21-openjdk-amd64目录,再用update-alternatives --install为各版本的java和javac手动注册并设不同优先级,随后通过--config java和--config javac同步切换,最后运行update-java-home脚本自动更新JAVA_HOME并重载环境。

在Ubuntu 24.04上同时安装JDK 8、17、21后,需要按项目需求快速切换默认Java版本,避免每次手动改环境变量或重复配置PATH。
确认已安装的JDK版本
先检查系统是否已识别多个JDK路径:
运行 ls /usr/lib/jvm/ | grep -E 'java-8|java-17|java-21',确保输出中包含类似 java-8-openjdk-amd64、java-17-openjdk-amd64、java-21-openjdk-amd64 的目录名。若缺失某版本,需先用 sudo apt install openjdk-8-jdk 等命令补装。
这一步不可跳过——【update-alternatives 只能管理已注册的路径,未安装的版本不会出现在切换列表中】。
用 update-alternatives 注册所有 JDK
Ubuntu 24.04 默认只将首个安装的 JDK 自动注册进 alternatives 系统。其余版本需手动注册 java 和 javac 两项:
方法一:为 OpenJDK 8 注册
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-8-openjdk-amd64/bin/javac 1081
方法二:为 OpenJDK 17 注册
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-17-openjdk-amd64/bin/java 1171
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-17-openjdk-amd64/bin/javac 1171
方法三:为 OpenJDK 21 注册
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-21-openjdk-amd64/bin/java 1211
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-21-openjdk-amd64/bin/javac 1211
注意:优先级数字(如1081、1171)必须互不相同且体现版本逻辑,否则切换时可能无法生效;【javac 必须和 java 同步注册,否则编译时会报错找不到匹配的 JDK】。
交互式切换默认 Java 版本
执行命令进入选择界面:
sudo update-alternatives --config java
Ubuntu 26.04 LTS(代号“Resolute Raccoon”)是Canonical于2026年4月23日发布的下一代长期支持版操作系统,提供长达10年的技术支持。它搭载Linux 7.0内核与GNOME 50桌面环境,全面转向Wayland协议,并引入Rust重写的核心工具以增强安全性。官方提供适用于AMD64和ARM64架构的桌面及服务器ISO镜像,是追求前沿技术与极致稳定的开发者
终端将列出所有已注册的 Java 路径,并标出当前星号项。输入对应编号(如 2)→ 按回车确认。
接着必须同步切换编译器:
sudo update-alternatives --config javac
选择与 java 相同编号的选项。两步缺一不可——否则 java -version 和 javac -version 显示版本不一致,Maven 构建会失败。
验证是否生效:
java -version && javac -version
设置 JAVA_HOME 自动适配当前版本
第一步:创建自动检测脚本
运行 sudo nano /usr/local/bin/update-java-home,写入以下内容:
#!/bin/bash<br>export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:/jre/bin/java::" | sed "s:/bin/java::")<br>echo $JAVA_HOME > /etc/java-home.current<br>echo "JAVA_HOME set to $JAVA_HOME"
第二步:赋予执行权限
sudo chmod +x /usr/local/bin/update-java-home
第三步:绑定到每次切换后自动执行
编辑 sudo nano /etc/profile.d/java-switch.sh,添加:
source /etc/java-home.current 2>/dev/null || export JAVA_HOME="/usr/lib/jvm/default-java"<br>export PATH=$JAVA_HOME/bin:$PATH
最后,每次完成 update-alternatives --config java 后,立即运行:
sudo update-java-home && source /etc/profile.d/java-switch.sh

















