在Linux系统中,查看自带的JDK(Java Development Kit)是开发环境中常见的操作,尤其在避免版本冲突、确认系统兼容性或排查问题时至关重要,Linux发行版通常预装OpenJDK,但不同系统可能通过不同方式管理JDK,因此掌握多种查看方法能更高效地定位信息,以下从命令行工具、环境变量、包管理器等多个维度详细说明如何查看Linux系统自带的JDK。

通过Java命令检查版本和安装状态
Java命令是最直接的检查方式,可快速确认系统是否安装JDK及版本信息,需要注意的是,java命令可能对应JRE(Java Runtime Environment),而JDK包含javac(Java编译器),因此需结合javac -version判断是否为完整JDK。
检查Java版本
执行以下命令:
java -version
输出示例:
openjdk version "11.0.12" 2021-07-20
OpenJDK Runtime Environment 18.9 (build 11.0.12+7)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.12+7, mixed mode, sharing)
若输出包含“OpenJDK Runtime Environment”,说明安装了JRE;若需确认JDK,需进一步检查javac命令。
检查JDK编译器
执行:
javac -version
若输出类似“javac 11.0.12”,则说明系统安装了完整JDK;若提示“命令未找到”,则仅安装了JRE,需额外安装JDK。
检查JAVA_HOME环境变量
JAVA_HOME是Java应用的核心环境变量,指向JDK安装根目录,若已正确配置,可通过以下命令查看:
echo $JAVA_HOME
若输出类似/usr/lib/jvm/java-11-openjdk-amd64,则直接显示JDK路径;若为空或未定义,说明环境变量未设置,此时需结合其他方法定位JDK路径。
注意:部分系统可能未自动设置JAVA_HOME,需手动配置(通常在/etc/profile或用户家目录的.bashrc中添加)。
定位Java可执行文件路径
通过which或ls命令可定位Java命令的实际安装路径,进而判断JDK位置。
使用which命令
which java
输出示例:/usr/bin/java,这是Java命令的软链接路径,需进一步解析真实路径。

解析软链接真实路径
执行以下命令获取JDK安装目录:
readlink -f $(which java)
输出示例:/usr/lib/jvm/java-11-openjdk-amd64/bin/java,由此可知JDK根目录为/usr/lib/jvm/java-11-openjdk-amd64。
检查常见JDK安装目录
Linux系统通常将JDK安装在/usr/lib/jvm/或/usr/java/目录下,可直接列出该目录查看:
ls /usr/lib/jvm/
输出可能包含:java-1.8.0-openjdk-amd64、java-11-openjdk-amd64等,即为不同版本的JDK目录。
通过包管理器查询已安装的JDK包
不同Linux发行版使用不同的包管理器(如rpm/yum、dpkg/apt),通过包管理器可精确查询JDK的包名、版本及安装路径。
RedHat/CentOS系统(使用rpm或yum)
-
查询所有Java相关包:
rpm -qa | grep java
输出示例:
java-1.8.0-openjdk-1.8.0.292.b10-1.el7_9.x86_64 java-1.8.0-openjdk-devel-1.8.0.292.b10-1.el7_9.x86_64 java-11-openjdk-11.0.12-0.el7_9.x86_64其中包含
devel的包为JDK开发包(含javac),仅openjdk为JRE。 -
使用
yum查询已安装包详情:yum list installed | grep java
Debian/Ubuntu系统(使用dpkg或apt)
-
查询已安装的Java包:
dpkg -l | grep openjdk
输出示例:

ii openjdk-11-jdk:amd64 11.0.12+7-0ubuntu1~20.04 amd64 OpenJDK Development Kit (JDK) ii openjdk-11-jre:amd64 11.0.12+7-0ubuntu1~20.04 amd64 OpenJava Runtime Environment包含
jdk的为开发包,jre为运行时环境。 -
使用
apt查询安装详情:apt list --installed | grep openjdk
使用update-alternatives管理多版本JDK
部分系统通过update-alternatives工具管理多个Java版本,可通过该工具查看当前激活的JDK版本及可选版本:
update-alternatives --display java
输出示例:
java - status is manual.
link currently points to /usr/lib/jvm/java-11-openjdk-amd64/bin/java
/usr/lib/jvm/java-11-openjdk-amd64/bin/java provides java (auto mode)
若系统未配置update-alternatives,需先安装该工具(如sudo apt install update-alternatives),再通过sudo update-alternatives --config java切换版本。
不同查看方法对比
为更直观地选择合适方法,以下是常见方式的对比:
| 方法 | 命令示例 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|---|
| Java命令检查 | java -version、javac -version |
快速确认版本及JDK/JRE状态 | 简单直接,无需额外工具 | 无法直接获取安装路径 |
| 环境变量检查 | echo $JAVA_HOME |
查看已配置的JDK路径 | 直接关联应用配置 | 需确保环境变量已设置 |
| 定位可执行文件路径 | readlink -f $(which java) |
获取JDK真实安装目录 | 精确路径,无需包管理器 | 需处理软链接逻辑 |
| 包管理器查询 | rpm -qa | grep java |
查询JDK包名、版本及依赖 | 信息全面,适合批量管理 | 依赖系统包管理工具 |
| update-alternatives | update-alternatives --display java |
管理多版本JDK及查看激活状态 | 支持版本切换 | 需系统已配置该工具 |
相关问答FAQs
问题1:为什么执行java -version能显示版本,但JAVA_HOME为空?
解答:这种情况通常是因为系统安装了JDK但未配置JAVA_HOME环境变量。java命令通过系统PATH路径定位可执行文件,而JAVA_HOME是手动设置的环境变量,需用户主动配置,可通过以下步骤设置:
- 编辑环境变量文件(如
/etc/profile或用户家目录的.bashrc):sudo nano /etc/profile
- 添加以下内容(路径需替换为实际JDK目录):
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 export PATH=$JAVA_HOME/bin:$PATH
- 保存后执行
source /etc/profile使配置生效,再次检查echo $JAVA_HOME即可显示路径。
问题2:如何确认系统自带的JDK是否为开发版(包含javac)?
解答:可通过以下两种方式确认:
- 检查
javac命令:执行javac -version,若输出版本信息(如javac 11.0.12),则说明为开发版JDK;若提示“命令未找到”,则为仅JRE。 - 通过包管理器查询包名:
- RedHat系:
rpm -qa | grep java,查找包含devel的包(如java-11-openjdk-devel),此类包为JDK开发包; - Debian系:
dpkg -l | grep openjdk,查找包含jdk的包(如openjdk-11-jdk),区别于jre运行时包。
- RedHat系:
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/15858.html