Ubuntu上查看和切换JDK版本核心靠update-alternatives工具,必须同时配置java和javac等命令以确保运行与编译版本一致;手动修改PATH或JAVA_HOME易遗漏配套工具,不推荐日常使用。

Ubuntu 上查看和切换 JDK 版本,核心靠 update-alternatives 工具管理多个 Java 安装路径,配合环境变量确保命令和编译器一致。手动改 PATH 或 JAVA_HOME 也能用,但容易遗漏 javac 或其他工具,不推荐作为日常切换方式。
一、查看当前默认 JDK 版本
直接运行:
java -version<br>javac -version
这两个命令分别显示运行时 Java 和编译器版本。如果输出不一致(比如 java 是 17,javac 是 11),说明环境未同步,后续切换需同时处理两者。
二、列出所有已安装的 JDK
Ubuntu 通过包管理器(apt)安装的 OpenJDK 会自动注册到 alternatives 系统。查可用选项:
update-alternatives --list java<br>update-alternatives --list javac
若提示 “no alternatives”,说明尚未注册——常见于手动解压安装的 JDK(如从 Temurin 下载的 tar.gz 包)。此时需先用 update-alternatives --install 手动添加(见第四部分)。
也可快速浏览系统中已有的 JDK 目录:
ls /usr/lib/jvm/
典型路径如:java-8-openjdk-amd64、java-11-openjdk-amd64、java-17-openjdk-amd64 等。
三、交互式切换 JDK(推荐)
运行以下命令,系统会列出所有已注册的 Java 路径并让你选择:
sudo update-alternatives --config java<br>sudo update-alternatives --config javac
注意:必须对 java 和 javac 分别执行,否则可能出现运行和编译版本不匹配的问题。
终端会显示类似:
There are 3 choices for the alternative java (providing /usr/bin/java).</code><br><code>Selection Path Priority Status</code><br><code>------------------------------------------------------------</code><br><code> 0 /usr/lib/jvm/java-17-openjdk-amd64/bin/java 1701 auto mode</code><br><code> 1 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode</code><br><code>* 2 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1101 manual mode
输入对应编号(如想切到 JDK 8,就输 1),回车确认。再运行 java -version 验证。
四、手动添加未注册的 JDK(如自定义解压版)
如果你把 JDK 解压到了 /opt/java/jdk-21.0.1+12 这类非标准路径,需先注册进 alternatives:
sudo update-alternatives --install /usr/bin/java java /opt/java/jdk-21.0.1+12/bin/java 2100<br>sudo update-alternatives --install /usr/bin/javac javac /opt/java/jdk-21.0.1+12/bin/javac 2100
其中最后的数字是优先级(priority):数值越大,默认选中概率越高。建议设为版本号×100(如 JDK 21 → 2100),便于排序识别。
注册后,再执行 sudo update-alternatives --config java 就能看到新版本了。
五、设置快捷切换命令(可选)
为避免每次输 sudo 和长路径,可在 ~/.bashrc 中添加别名:
alias jdk8='sudo update-alternatives --set java /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java && sudo update-alternatives --set javac /usr/lib/jvm/java-8-openjdk-amd64/bin/javac && java -version'<br>alias jdk11='sudo update-alternatives --set java /usr/lib/jvm/java-11-openjdk-amd64/bin/java && sudo update-alternatives --set javac /usr/lib/jvm/java-11-openjdk-amd64/bin/javac && java -version'
保存后运行 source ~/.bashrc,之后在终端直接输入 jdk8 或 jdk11 即可一键切换并验证。
不复杂但容易忽略的是 javac 同步和权限问题——切完 java 忘切 javac,或没加 sudo 导致配置失败。只要记住“java 和 javac 一起配”,基本不会出错。


















