在 CentOS 上“找不到 Java 编译器(javac)”,通常有以下几种常见原因和对应解决办法:
最常见原因
java 能运行,但 javac 找不到which java
which javac
如果只有 java 没有 javac,就是这个问题。
CentOS 7
sudo yum install java-1.8.0-openjdk-devel
CentOS 8 / Stream
sudo dnf install java-1.8.0-openjdk-devel
或安装最新版:
sudo dnf install java-latest-openjdk-devel
即使装了 JDK,javac 也可能不在 PATH 中。
find / -name javac 2>/dev/null
通常路径类似:
/usr/lib/jvm/java-1.8.0-openjdk/bin/javac
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$JAVA_HOME/bin:$PATH
写入配置文件(推荐):
vi ~/.bashrc
追加上面两行,然后:
source ~/.bashrc
CentOS 使用 alternatives 管理 Java。
alternatives --display java
alternatives --display javac
sudo alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-1.8.0-openjdk/bin/javac 1
sudo alternatives --config javac
CentOS 最小化安装默认 不含任何 Java。
解决方式就是直接安装 JDK(见第一节)。
java -version
javac -version
两个命令都应正常输出。
| 现象 | 原因 | 解决 |
|---|---|---|
| java 有,javac 没有 | 只装 JRE | 装 -devel |
| 都装了但找不到 | PATH 问题 | 配 JAVA_HOME |
| 多版本混乱 | alternatives | 用 alternatives 配置 |
如果你愿意,可以把下面命令的输出贴出来,我可以帮你精确定位:
which java javac
rpm -qa | grep openjdk
echo $PATH