在 Linux 系统上,查看 Java 安装路径有多种方法,具体取决于 Java 是如何安装的(通过包管理器、手动解压安装等),下面我将从最常用到最详细的顺序,为你介绍几种方法。

使用 which 或 whereis 命令(最常用)
这两个命令可以快速找到 Java 可执行文件的位置。
which java
这个命令会显示当前用户环境变量 PATH 中找到的第一个 java 命令的完整路径。
which java
示例输出:
/usr/bin/java
这表示 java 命令位于 /usr/bin/java,但请注意,这通常是一个符号链接,指向真正的 Java 安装目录。

whereis java
whereis 命令比 which 更强大,它会查找二进制文件、源代码和手册页的位置。
whereis java
示例输出:
java: /usr/bin/java /usr/share/java /usr/lib/jvm/java-11-openjdk-amd64
这个输出告诉你,Java 的可执行文件在 /usr/bin/java,相关的库文件在 /usr/share/java,而主要的安装目录(JVM)在 /usr/lib/jvm/java-11-openjdk-amd64,这个 jvm 目录通常是你最关心的 Java 安装路径。
使用 update-java-alternatives 命令(针对 Debian/Ubuntu 系统)
如果你使用的是 apt 包管理器(如 Ubuntu, Debian, Mint 等),系统通常会使用 update-java-alternatives 来管理多个 Java 版本。

update-java-alternatives --list
示例输出:
java-1.8.0-openjdk-amd64 1081 /usr/lib/jvm/java-1.8.0-openjdk-amd64
java-11-openjdk-amd64 1101 /usr/lib/jvm/java-11-openjdk-amd64
java-17-openjdk-amd64 1171 /usr/lib/jvm/java-17-openjdk-amd64
这个列表清晰地显示了所有已安装的 Java 版本及其对应的安装路径,你可以使用 update-java-alternatives -s <路径> 来切换默认的 Java 版本。
使用 ls -l 跟随符号链接
which 命令找到的路径往往是符号链接,要找到最终的真实路径,可以使用 ls -l 命令。
ls -l $(which java)
或者分两步:
# 1. 先找到 java 命令的位置 which java # 假设输出是 /usr/bin/java # 2. 查看该位置的详细信息 ls -l /usr/bin/java
示例输出:
lrwxrwxrwx 1 root root 25 Nov 20 10:30 /usr/bin/java -> /etc/alternatives/java
这显示 /usr/bin/java 是一个指向 /etc/alternatives/java 的链接,我们继续追查:
ls -l /etc/alternatives/java
示例输出:
lrwxrwxrwx 1 root root 46 Nov 20 10:31 /etc/alternatives/java -> /usr/lib/jvm/java-17-openjdk-amd64/bin/java
现在我们找到了最终的真实路径:/usr/lib/jvm/java-17-openjdk-amd64/bin/java,Java 的主安装路径就是 /usr/lib/jvm/java-17-openjdk-amd64。
使用 readlink 命令(更优雅地解析符号链接)
readlink 命令可以更直接地解析符号链接的最终目标。
readlink -f $(which java)
示例输出:
/usr/lib/jvm/java-17-openjdk-amd64/bin/java
这个命令非常高效,一步就能找到 java 可执行文件的绝对路径。
使用 echo $JAVA_HOME(检查环境变量)
JAVA_HOME 是一个非常重要的环境变量,它指向 Java 的主安装目录,很多应用程序(如 Tomcat, Maven)依赖它。
echo $JAVA_HOME
可能的结果:
- 有输出: 如果已经正确设置了
JAVA_HOME,它会直接显示路径。/usr/lib/jvm/java-17-openjdk-amd64 - 无输出或为空:
JAVA_HOME没有被设置,命令不会有任何输出。
注意: JAVA_HOME 未设置,你可以根据上面找到的路径手动设置它(通常在 ~/.bashrc, ~/.profile 或 /etc/environment 文件中添加):
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 export PATH=$JAVA_HOME/bin:$PATH
使用 java -XshowSettings:properties 命令
Java 自身可以打印出其内部配置信息,包括安装路径。
java -XshowSettings:properties -version 2>&1 | grep "java.home"
命令解释:
java -XshowSettings:properties: 打印 Java 的系统属性。-version: 同时打印 Java 版本信息,确保命令能执行。2>&1: 将错误流重定向到标准输出,因为某些 Java 版本的信息可能输出到 stderr。grep "java.home": 从输出中过滤出包含java.home的行。
示例输出:
java.home = /usr/lib/jvm/java-17-openjdk-amd64
这个 java.home 属性的值就是 Java 的安装根目录。
总结与推荐
| 方法 | 命令 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
which |
which java |
最快,简单 | 返回的可能是链接 | 快速确认 java 命令是否存在 |
whereis |
whereis java |
信息全面,显示多个相关路径 | 输出信息较多 | 需要了解 Java 文件分布时 |
update-java-alternatives |
update-java-alternatives --list |
官方管理工具,清晰列出所有版本 | 仅适用于 Debian/Ubuntu 系统 | 管理 Ubuntu/Debian 上的多版本 Java |
ls -l |
ls -l $(which java) |
直观,可手动追踪链接 | 需要多步操作 | 理解符号链接链时 |
readlink |
readlink -f $(which java) |
非常推荐,一步到位获取真实路径 | 无 | 快速、可靠地获取 Java 可执行文件的真实路径 |
JAVA_HOME |
echo $JAVA_HOME |
直接获取标准环境变量值 | 可能未设置 | 检查或使用 JAVA_HOME 环境变量时 |
java -XshowSettings |
java -XshowSettings:properties ... |
最权威,来自 Java 自身 | 命令稍长,需要解析输出 | 需要获取 Java 内部确认的路径时 |
最推荐的通用方法是:
readlink -f $(which java)
这个命令在大多数 Linux 发行版上都能工作,并且能直接、准确地告诉你 Java 可执行文件的最终位置,如果你想找的是主安装目录(JVM),那么输出结果的 bin 目录的上一级就是你所需要的路径。
