必须同时验证java和javac命令:java -version返回版本说明运行时就绪,javac -version返回版本才证明OpenJDK完整安装;二者路径需同根,且JAVA_HOME须指向含bin/java与bin/javac的JDK根目录。

只运行 java -version 不足以确认 OpenJDK 是否已安装——它只能说明 JRE 可用,不能证明你有编译能力。
必须同时验证 java 和 javac 命令
OpenJDK 是开发套件,核心标志是 javac(Java 编译器)存在。仅 java -version 成功,很可能是系统自带的 JRE 或精简版运行环境,后续写代码、跑 Maven 会直接失败。
-
java -version返回类似openjdk version "21.0.6"→ 运行时 OK -
javac -version返回类似javac 21.0.6→ 编译器 OK - 若后者报
command not found,说明不是 OpenJDK,或虽装了但bin/没进PATH
which java 和 which javac 要指向同一父目录
两个命令返回的路径必须共享同一个根目录(比如都落在 /usr/lib/jvm/java-21-openjdk-amd64 下),否则大概率是环境混乱:一个来自包管理器,另一个是手动解压的旧版本,或 IDE 自带的嵌入式 JRE。
- 正确示例:
which java→/usr/lib/jvm/java-21-openjdk-amd64/bin/java;which javac→ 同一路径下的javac - 危险信号:
which java指向/usr/bin/java(符号链接),而which javac报错,或指向/opt/jdk-17/bin/javac—— 版本不一致,PATH 未对齐 - 用
ls -l $(which java)追踪符号链接,直到看到真实java-xx-openjdk-xxx目录名
别信 apt list 或 rpm -qa 的空结果
包管理器查不到 ≠ 没装 OpenJDK。很多用户从官网下载 tar.gz 手动解压到 /opt/jdk-21 或 /usr/local/jdk,这种部署完全绕过 APT/YUM/RPM,apt list --installed | grep jdk 会安静地返回空行。
- 务必补查物理路径:
ls /usr/lib/jvm/(包管理器常用位置)、ls /opt/jdk*、ls /usr/local/jdk* - 只要某个路径下存在
bin/java和bin/javac两个可执行文件,就确认 OpenJDK 已落地 - 注意:有些解压包里
bin/下只有java,缺javac—— 那是 JRE 包,不是 OpenJDK
JAVA_HOME 必须指向 JDK 根目录,不是 bin 也不是 jre
很多工具(Maven、Gradle、IDEA)靠 JAVA_HOME 定位完整 JDK,设错会导致“明明终端能用,IDE 却报 No JDK”这类割裂问题。
- 运行
echo $JAVA_HOME,输出应类似/usr/lib/jvm/java-21-openjdk-amd64或/opt/jdk-21.0.6+7 - 该路径下必须有
bin/、lib/、conf/(或jre/)等子目录;若指向.../jre或.../bin,就是错的 - 检查方式:
ls $JAVA_HOME/bin/java $JAVA_HOME/bin/javac—— 两个都存在才算过关
最容易被跳过的其实是 javac 和 JAVA_HOME 的双重校验。很多人看到 java -version 有输出就关终端,结果新建项目时 mvn compile 直接报错,再回头折腾 PATH 和 JAVA_HOME,反而更费时间。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











