在 CentOS 上编译 Java 程序时提示“找不到 JDK”,通常是 JDK 未安装、未配置环境变量,或只装了 JRE。下面按常见情况一步步排查和解决。
java -version
javac -version
java 有输出,但 javac 找不到 → 只装了 JRE,没有 JDKcommand not found → JDK 未安装或未配置环境变量sudo yum install -y java-1.8.0-openjdk
sudo yum install -y java-1.8.0-openjdk-devel
⚠️ 一定要装
-devel,否则没有javac
sudo dnf install -y java-1.8.0-openjdk
sudo dnf install -y java-1.8.0-openjdk-devel
安装完成后验证:
javac -version
sudo yum install -y java-11-openjdk java-11-openjdk-devel
或
sudo yum install -y java-17-openjdk java-17-openjdk-devel
javacsudo find / -name javac 2>/dev/null
常见路径:
/usr/lib/jvm/java-1.8.0-openjdk/bin/javac
编辑配置文件:
vi ~/.bashrc
添加(示例):
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$JAVA_HOME/bin:$PATH
使配置生效:
source ~/.bashrc
再次验证:
javac -version
make / mvn / gradle 编译mvn -version
如果报错:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
gradle -version
| 错误信息 | 原因 | 解决方法 |
|---|---|---|
javac: command not found |
没装 JDK | 安装 java-*-openjdk-devel |
JAVA_HOME not set |
环境变量未配置 | 设置 JAVA_HOME |
UnsupportedClassVersionError |
JDK 版本不匹配 | 使用对应版本 JDK |
| 编译成功但运行报错 | 编译和运行 JDK 不一致 | 统一 JDK 版本 |
echo "JAVA_HOME=$JAVA_HOME"
which java
which javac
java -version
javac -version
只要把下面信息发我即可:
cat /etc/centos-release
java -version
javac -version