ubuntu 22.04 安装 openjdk 21 开发环境应优先使用 apt install openjdk-21-jdk,系统自动配置 update-alternatives 和 java_home;手动解压 tar.gz 易导致 ide 识别失败、maven 构建错误及多版本路径不一致。

Ubuntu 22.04 安装 OpenJDK 21 开发环境,核心是用系统包管理器正确安装完整 JDK(含 javac 等开发工具),并确保 java 和 javac 版本一致、路径统一。手动解压 tar.gz 包容易导致 IDE 识别异常、Maven 构建失败或多版本切换混乱,不推荐。
Ubuntu 26.04 LTS(代号“Resolute Raccoon”)是Canonical于2026年4月23日发布的下一代长期支持版操作系统,提供长达10年的技术支持。它搭载Linux 7.0内核与GNOME 50桌面环境,全面转向Wayland协议,并引入Rust重写的核心工具以增强安全性。官方提供适用于AMD64和ARM64架构的桌面及服务器ISO镜像,是追求前沿技术与极致稳定的开发者
确认系统架构和软件源状态
Ubuntu 22.04(代号 jammy)官方仓库已支持 OpenJDK 21,但需确保软件源启用且更新及时:
- 运行
uname -m确认是x86_64(即 amd64),不是 i386; - 检查
/etc/apt/sources.list是否包含jammy-security main universe(尤其universe仓库必须启用,OpenJDK 包在此); - 执行
sudo apt update,避免因缓存过旧导致找不到包。
用 apt 安装 openjdk-21-jdk
OpenJDK 21 的正确包名是 openjdk-21-jdk(不是 openjdk-21 或 openjdk21):
- 运行
sudo apt install openjdk-21-jdk -y; - 安装后自动注册到
/usr/lib/jvm/java-21-openjdk-amd64/,并由update-alternatives管理; - 验证命令:
java -version # 应输出 openjdk version "21.0.x" javac -version # 必须同步输出相同版本号
验证 JAVA_HOME 是否可用
Ubuntu 的 openjdk-*-jdk 包会自动设置 JAVA_HOME 软链(通常指向 /usr/lib/jvm/java-21-openjdk-amd64),无需手动配置:
- 运行
echo $JAVA_HOME,若为空,说明当前 shell 未继承系统级环境变量(常见于非登录 shell); - 此时可直接使用
readlink -f $(which java)查看实际路径,该路径即为权威JAVA_HOME; - 如需在脚本或 CI 中显式引用,建议写成
export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))。
多 Java 版本共存时的安全切换
若系统已装多个 JDK(如 11、17、21):
- 列出所有注册的 Java 实例:
sudo update-alternatives --list java; - 交互切换
java:sudo update-alternatives --config java; -
必须同步切换
javac:sudo update-alternatives --config javac; - 切换后再次运行
java -version和javac -version,确保两者路径一致(readlink -f $(which java)和readlink -f $(which javac)输出相同目录)。
常见问题与绕过方式
- 若
apt install openjdk-21-jdk报 “unable to locate package”,先确认是否漏了universe仓库:sudo add-apt-repository universe sudo apt update
- 不要用
openjdk-21-jre替代 —— 它不含javac,无法编译; - 避免在
/etc/profile或~/.bashrc中硬写export JAVA_HOME=/xxx,这会与update-alternatives冲突; - IntelliJ IDEA / VS Code 等工具默认读取
update-alternatives注册路径,只要java -version正确,IDE 就能自动识别。










