Ubuntu 18.04上最稳妥、官方支持的OpenJDK版本是openjdk-11-jdk,需启用universe源后安装,它自带javac且路径固定为/usr/lib/jvm/java-11-openjdk-amd64,无需手动设JAVA_HOME。

openjdk-11-jdk 是 Ubuntu 18.04 上最稳妥、官方支持的 LTS 版本;别试 openjdk-17-jdk 或 openjdk-21-jdk,它们不在默认源里,硬装会报 E: Unable to locate package。
确认 Ubuntu 版本和软件源状态
Ubuntu 18.04 的 universe 源默认未启用,而 OpenJDK 包全在 universe 里。不打开它,apt install 直接找不到包。
执行以下命令检查并启用:
lsb_release -sc # 确认是 bionic grep -E "^deb.*universe" /etc/apt/sources.list # 若无输出,说明未启用 sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu bionic universe" sudo apt update
注意:别用 ppa:webupd8team/java——这个 PPA 早在 2019 年就废弃了,现在加进去只会触发 GPG 密钥错误或 404。
安装 openjdk-11-jdk 而不是 jre 或 headless 版
开发用途必须装 openjdk-11-jdk,不是 openjdk-11-jre(没 javac),也不是 openjdk-11-jdk-headless(缺 AWT/Swing 支持,IntelliJ 或 JavaFX 应用会启动失败)。
正确命令:
sudo apt install openjdk-11-jdk
安装后自动注册进 update-alternatives,java 和 javac 命令开箱即用,无需手动软链。
-
java -version应输出类似openjdk version "11.0.22" -
javac -version必须能返回版本号,否则说明装错了包 -
which java指向/usr/bin/java,它实际是/etc/alternatives/java的符号链接
JAVA_HOME 不需要手动设,但得知道它在哪
APT 安装的 OpenJDK 默认路径固定:/usr/lib/jvm/java-11-openjdk-amd64(AMD64/x86_64)或 /usr/lib/jvm/java-11-openjdk-arm64(ARM64)。你不需要 export 它,除非 Maven、Gradle 或 IDE 显式要求。
验证路径是否准确:
readlink -f $(which java) | sed 's:/bin/java$::'
结果应为上述 /usr/lib/jvm/... 路径。如果某些工具报 JAVA_HOME not set,才在 ~/.bashrc 里加一行:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
别写成 /usr/lib/jvm/java-11-openjdk-amd64/jre——那是旧版 JDK 8 的习惯,OpenJDK 11+ 的 JRE 已被移除,整个目录就是 JDK 根。
多版本共存时如何切换默认 JDK
如果你后续又装了 openjdk-8-jdk 或 openjdk-17-jdk(需额外源),系统不会自动覆盖默认值。切版本用:
sudo update-alternatives --config java
终端会列出所有已注册的 java 实现,输入编号即可切换。注意:这仅改 java 和 javac,不改 JAVA_HOME——后者仍是你手动设的路径,务必同步更新。
容易漏掉的一点:sudo update-alternatives --config javac 要单独运行一次,确保编译器和运行时版本一致,否则 Maven 构建可能用 JDK 11 编译、却用 JDK 8 运行,报 UnsupportedClassVersionError。


















