在linux中查所有已安装java版本需三步:一查update-alternatives --list java获取注册列表;二扫/usr/lib/jvm/等标准目录看子目录名;三用readlink -f $(which java)或java -xshowsettings:properties -version | grep 'java.home'定位当前生效路径并确认是否独立安装。

在 Linux 中查所有已安装的 Java 版本,不能只靠 java -version——它只告诉你当前生效的那个。真正要“数清楚装了几个”,得从路径、注册机制和目录结构三方面入手。
看系统注册的 Java 候选列表
Debian/Ubuntu 系发行版用 update-alternatives 管理多版本,这是最权威的清单:
-
update-alternatives --list java:列出所有已注册的 Java 可执行路径(如/usr/lib/jvm/java-17-openjdk-amd64/bin/java) -
update-alternatives --display java:额外显示当前默认项、优先级和模式(auto/manual)
注意:手动解压安装的 JDK 若没运行 update-alternatives --install,就不会出现在这里。
扫标准安装目录
绝大多数包管理器安装的 JDK 都落在固定位置,直接查看子目录名就能识别版本:
-
ls -l /usr/lib/jvm/:主流路径,子目录名通常含版本号(如java-8-openjdk-amd64、jdk-21.0.2+13) -
ls -l /opt/java或ls -l ~/jdk*:少数手动安装可能放在这里,需主动检查
macOS 用户对应路径是 ~/Library/Java/JavaVirtualMachines/,但 Linux 下不适用。
定位当前正在用的 JDK 实际路径
知道“哪个在跑”才能确认它是否算作一个独立安装版本:
-
which java找到软链接位置(通常是/usr/bin/java) -
readlink -f $(which java)展开全部符号链接,得到真实路径(如/usr/lib/jvm/java-17-openjdk-amd64/bin/java) -
dirname $(dirname $(readlink -f $(which java)))提取根目录,即 JDK 安装位置
这个路径如果不在 /usr/lib/jvm/ 下,说明可能是独立部署的版本,也应计入总数。
用 Java 自身报告它的 home 目录
JVM 启动时会读取自身配置,这条命令不依赖外部工具或环境变量:
java -XshowSettings:properties -version 2>&1 | grep 'java.home'
输出类似 java.home = /usr/lib/jvm/java-11-openjdk-amd64,这就是当前 JVM 认为自己所在的根目录——和上面 readlink 方式结果一致,可交叉验证。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











