在 CentOS 上“识别不了 Java 编译器”,通常并不是系统本身有问题,而是环境或安装方式导致的。下面按最常见原因给你梳理一下,并给出对应解决办法。
现象
java -version # 能用
javac -version # 报错:command not found
原因
java 是运行环境(JRE)javac 是编译器,只在 JDK 中才有解决
# CentOS 7/8
yum install java-1.8.0-openjdk-devel -y
# 或
dnf install java-17-openjdk-devel -y
安装后:
javac -version
现象
ls /usr/lib/jvm/
# 能看到 java-1.8.0-openjdk
但 javac 仍找不到
解决:手动配置环境变量
vi /etc/profile
添加:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$JAVA_HOME/bin:$PATH
生效:
source /etc/profile
验证:
which javac
javac -version
CentOS 常用 alternatives 管理 Java:
alternatives --config java
alternatives --config javac
如果没有 javac:
alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-1.8.0-openjdk/bin/javac 1
最小化系统:
which检查:
rpm -qa | grep openjdk
如果只有:
java-1.8.0-openjdk
说明 缺 devel 包
如果你是从 Oracle 官网下载的 .tar.gz:
tar -zxvf jdk-17_linux-x64_bin.tar.gz -C /opt/
必须手动配:
export JAVA_HOME=/opt/jdk-17
export PATH=$JAVA_HOME/bin:$PATH
which java
which javac
echo $JAVA_HOME
rpm -qa | grep openjdk
CentOS 识别不了 Java 编译器,90% 是因为:没装 JDK(devel 包),或 javac 不在 PATH 中。
如果你愿意,可以把下面命令的输出贴出来,我可以直接帮你定位:
cat /etc/centos-release
java -version
javac -version
echo $PATH