在 Linux 系统中查看 Java 的安装路径,有多种方法,可以根据你的具体情况(Java 是否通过 apt/yum 安装,是否设置了 JAVA_HOME 等)选择最合适的一种。

以下是几种最常用和最可靠的方法,按推荐顺序排列:
使用 which 或 type 命令(查找可执行文件路径)
这是最直接的方法,可以告诉你当前系统默认使用的 java 命令位于哪个位置。
使用 which 命令
which 命令会在环境变量 $PATH 定义的路径中查找指定的可执行文件。
which java
示例输出:

/usr/bin/java
这表示 java 命令是一个指向 /usr/bin/java 的符号链接。
使用 type 命令
type 命令功能更强大,不仅可以显示路径,还能告诉你命令的类型(是别名、内置命令还是文件)。
type java
示例输出 1 (符号链接):
java is /usr/bin/java
示例输出 2 (符号链接的真实路径):
如果你想找到最终指向的文件,可以结合 ls -l:

ls -l $(which java)
输出可能类似:
lrwxrwxrwx 1 root root 23 Oct 25 10:30 /usr/bin/java -> /etc/alternatives/java
这表明 /usr/bin/java 指向 /etc/alternatives/java。
使用 update-alternatives 命令(管理多个 Java 版本)
在许多基于 Debian/Ubuntu 的系统上,update-alternatives 工具用于管理多个可用的软件版本(如 Java, Python 等),这是查看系统中所有已安装 Java 版本及其路径的权威方法。
update-alternatives --display java
示例输出:
java - auto mode
best version is /usr/lib/jvm/java-11-openjdk-amd64/bin/java
link currently points to /usr/lib/jvm/java-11-openjdk-amd64/bin/java
link java is /usr/bin/java
slave java.1.gz is /usr/share/man/man1/java.1.gz
从输出中你可以清楚地看到:
- 最佳版本 (best version):
/usr/lib/jvm/java-11-openjdk-amd64/bin/java - 当前链接指向 (link currently points to): 同上
- 系统链接路径:
/usr/bin/java
检查环境变量 $JAVA_HOME
$JAVA_HOME 是一个非常重要的环境变量,许多 Java 应用服务器(如 Tomcat, JBoss)和构建工具(如 Maven, Gradle)都依赖它来定位 JDK 的安装路径。
直接打印 $JAVA_HOME 变量
echo $JAVA_HOME
示例输出:
/usr/lib/jvm/java-11-openjdk-amd64
通过 java 命令反向查找 $JAVA_HOME
$JAVA_HOME 未设置,或者你想验证它是否正确,可以使用以下命令反向推导出 JDK 的主目录。
readlink -f $(which java)
命令解释:
which java: 找到java命令的路径,/usr/bin/java。readlink -f: 解析符号链接,并返回最终的绝对路径,它会解析/usr/bin/java -> /etc/alternatives/java -> /usr/lib/jvm/java-11-openjdk-amd64/bin/java,最终得到/usr/lib/jvm/java-11-openjdk-amd64/bin/java。dirname: 获取路径的目录部分。
一个更完整的命令是:
dirname $(dirname $(readlink -f $(which java)))
示例输出:
/usr/lib/jvm/java-11-openjdk-amd64
这个路径通常就是 $JAVA_HOME 应该设置的值。
查找 JDK 的安装目录(手动搜索)
如果你不确定 Java 是如何安装的,或者上述方法都失败了,你可以手动在常见的安装目录中搜索。
# 在 /usr 目录下搜索包含 "java" 或 "jdk" 的目录 sudo find /usr -name "*java*" -type d 2>/dev/null
示例输出:
/usr/lib/jvm
/usr/lib/jvm/java-11-openjdk-amd64
/usr/lib/jvm/java-11-openjdk-amd64/bin
/usr/lib/jvm/java-11-openjdk-amd64/conf
...
/usr/bin/java
你也可以搜索 java 可执行文件:
# 查找所有名为 java 的可执行文件 sudo find / -name "java" -type f 2>/dev/null
总结与推荐
| 方法 | 命令 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
which java |
which java |
快速、简单,直接给出命令路径 | 只能找到默认路径,不一定是 JDK 根目录 | 快速确认 java 命令位置 |
update-alternatives |
update-alternatives --display java |
最权威,能显示所有安装的 Java 版本 | 仅适用于使用该工具的系统(如 Debian/Ubuntu) | 管理/查看多个 Java 版本的首选 |
$JAVA_HOME |
echo $JAVA_HOME |
直接获取应用开发/部署所需的关键路径 | 可能未设置或设置错误 | 需要获取 $JAVA_HOME 时 |
| 反向推导 | dirname $(dirname $(readlink -f $(which java))) |
可靠地计算出 JDK 的根目录 | 命令稍显复杂 | 当 $JAVA_HOME 未设置时,用来推断其值 |
| 手动查找 | sudo find /usr -name "*java*" |
最彻底,能找到所有相关文件 | 速度慢,需要 sudo 权限 |
其他方法都失效时的备选方案 |
推荐流程:
- 快速检查:运行
which java。 - 查看详情:如果系统是 Debian/Ubuntu,运行
update-alternatives --display java获取最完整的信息。 - 获取
$JAVA_HOME:运行echo $JAVA_HOME,如果为空,使用反向推导命令dirname $(dirname $(readlink -f $(which java)))来获取。
