在 Linux 系统中,有几种常用且可靠的方法来查找 Java 的安装路径,我会按照从最推荐到备选的顺序列出这些方法。

使用 which 和 readlink (最推荐)
这是最直接、最可靠的方法之一,因为它能找到当前环境变量 PATH 中指定的 Java 可执行文件,并解析出其真实的安装路径。
-
首先找到 Java 可执行文件的位置:
which java
这会输出类似
/usr/bin/java的结果,这是一个符号链接(软链接)。 -
然后使用
readlink解析符号链接:
(图片来源网络,侵删)readlink -f $(which java)
或者分两步执行:
# 第一步:找到链接 readlink -f /usr/bin/java
这个命令会直接显示 Java 的真实安装路径。
示例输出:
/usr/lib/jvm/java-11-openjdk-amd64/bin/java或者
(图片来源网络,侵删)/usr/local/java/jdk-17.0.2/bin/java
使用 update-java-alternatives (适用于 Debian/Ubuntu 系统)
如果你的系统是通过 apt 包管理器安装的 Java,并且使用了 update-alternatives 工具来管理多个 Java 版本,这个方法非常有效。
-
列出所有已配置的 Java 版本:
update-java-alternatives --list
示例输出:
java-1.8.0-openjdk-amd64 /usr/lib/jvm/java-1.8.0-openjdk-amd64 java-11-openjdk-amd64 /usr/lib/jvm/java-11-openjdk-amd64 java-17-openjdk-amd64 /usr/lib/jvm/java-17-openjdk-amd64这里的第二列就是 Java 的安装路径。
-
查看当前正在使用的 Java 版本:
# 查看默认的 Java 版本 update-java-alternatives --get-selections
示例输出:
java-17-openjdk-amd64 manual这表示当前系统默认使用的是
java-17-openjdk-amd64,其路径就是上一步列表中对应的/usr/lib/jvm/java-17-openjdk-amd64。
使用 ls -l 查看符号链接 (简单直观)
如果你已经通过 which java 找到了 Java 的位置,可以直接用 ls 命令查看其详细信息。
ls -l /usr/bin/java
示例输出:
lrwxrwxrwx 1 root root 25 Nov 15 10:00 /usr/bin/java -> /etc/alternatives/java
这显示 /usr/bin/java 是一个指向 /etc/alternatives/java 的链接,继续追踪这个链接:
ls -l /etc/alternatives/java
示例输出:
lrwxrwxrwx 1 root root 43 Nov 15 10:01 /etc/alternatives/java -> /usr/lib/jvm/java-17-openjdk-amd64/bin/java
你会找到真实的 Java 可执行文件路径 /usr/lib/jvm/java-17-openjdk-amd64/bin/java,它的上一级目录 /usr/lib/jvm/java-17-openjdk-amd64 Java 的主安装目录。
使用 echo $JAVA_HOME (检查环境变量)
JAVA_HOME 是一个非常重要的环境变量,很多 Java 应用(如 Tomcat、Maven)都依赖它来定位 Java 安装路径。这个变量不一定总是被设置。
-
直接输出变量:
echo $JAVA_HOME
如果已经设置,它会直接输出 Java 的安装路径。 示例输出:
/usr/lib/jvm/java-17-openjdk-amd64 -
如果变量未设置,可以尝试手动查找: 如果上面命令没有输出,说明
JAVA_HOME未设置,你可以结合前面的方法来手动设置它,例如在你的~/.bashrc或~/.profile文件中添加:export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:/bin/java::")
然后运行
source ~/.bashrc使其生效。
使用 whereis 命令 (快速查找)
whereis 命令用于定位二进制文件、源代码和手册页,它速度很快,但返回的信息可能比较宽泛。
whereis java
示例输出:
java: /usr/bin/java /usr/share/java /usr/share/man/man1/java.1.gz
这告诉你 java 的可执行文件在 /usr/bin/java,相关的库文件在 /usr/share/java,这个结果比较宽泛,不如前面的方法精确。
总结与推荐
| 方法 | 命令 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
readlink -f $(which java) |
readlink -f $(which java) |
最精确、最推荐,直接返回真实路径 | 无明显缺点 | 适用于所有 Linux 发行版 |
update-java-alternatives |
update-java-alternatives --list |
管理 Java 版本非常清晰 | 仅适用于 Debian/Ubuntu 等 | 需要管理多版本 Java 的系统 |
ls -l |
ls -l /usr/bin/java |
直观,易于理解 | 需要多次追踪链接 | 适合手动排查和了解链接关系 |
echo $JAVA_HOME |
echo $JAVA_HOME |
快速,符合应用需求 | 变量可能未设置 | 检查或设置环境变量时 |
whereis |
whereis java |
速度最快 | 结果不够精确 | 快速定位 Java 相关文件的大致位置 |
日常使用建议:
- 快速获取精确路径: 直接使用
readlink -f $(which java)。 - 在 Debian/Ubuntu 系统上管理 Java: 使用
update-java-alternatives。 - 检查或配置环境变量: 使用
echo $JAVA_HOME。
