CentOS 本身是可以编译 Java 的,如果你遇到“无法编译 Java”,通常不是系统不支持,而是环境或配置问题。下面按常见原因给你梳理一下。
很多人只装了 java(运行环境),但没有 javac(编译器)。
java -version
javac -version
java 有版本,但 javac 提示 command not found
✅ 说明:只装了 JRE,没有 JDK# CentOS 7
yum install java-1.8.0-openjdk-devel
# CentOS 8 / Stream
dnf install java-11-openjdk-devel
注意:一定要带
-devel,这才是 JDK
即使装了 JDK,有时脚本或构建工具(Maven / Gradle)找不到 Java。
ls /usr/lib/jvm/
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$JAVA_HOME/bin:$PATH
建议写入:
~/.bashrc
或
/etc/profile
CentOS 可能同时存在多个 Java:
alternatives --config java
alternatives --config javac
确保 java 和 javac 指向同一版本。
.javals -l Hello.java
chmod +r Hello.java
SELinux 一般不会阻止 javac,但如果你在特殊目录编译(如 /root 外部挂载盘):
getenforce
如果是 Enforcing,可临时测试:
setenforce 0
如果你是想从源码编译 OpenJDK,那难度完全不同,需要:
这种情况请说明,我可以单独讲。
| 错误 | 原因 |
|---|---|
javac: command not found |
没装 JDK |
UnsupportedClassVersionError |
Java 版本不兼容 |
permission denied |
权限问题 |
package does not exist |
CLASSPATH 错误 |
cat /etc/centos-release)我可以直接帮你一步一步排查。