CentOS 下编译 Java 程序时常见报错很多,但大多数都和 JDK 环境、路径、版本不一致有关。下面我按最常见场景 → 原因 → 解决方法给你一个排查清单,你可以对照看看属于哪一种。
-bash: javac: command not found
javac 不在 PATH 中# 查看是否已有 java
java -version
# 查看是否有 javac
javac -version
如果没有 javac:
# CentOS 7
yum install -y java-1.8.0-openjdk-devel
# CentOS 8 / Stream
dnf install -y java-1.8.0-openjdk-devel
✅ 一定要带 devel(开发包)
Unsupported major.minor version 52.0
java 是 1.7javac 是 1.8java -version
javac -version
如果不一致,统一版本,例如:
yum install -y java-1.8.0-openjdk-devel
然后确认:
java -version
javac -version
JAVA_HOME is not set
编辑:
vi ~/.bashrc
加入(示例路径):
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$JAVA_HOME/bin:$PATH
生效:
source ~/.bashrc
错误: 编码 GBK 的不可映射字符
javac -encoding UTF-8 Hello.java
或转换文件编码:
iconv -f gbk -t utf-8 Hello.java -o Hello.java
Java heap space
export JAVA_OPTS="-Xms256m -Xmx512m"
Cannot find a valid baseurl
sed -i 's|mirrorlist=|#mirrorlist=|g' /etc/yum.repos.d/CentOS-*.repo
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*.repo
yum clean all
yum makecache
# 1. 安装 JDK
yum install -y java-1.8.0-openjdk-devel
# 2. 验证
java -version
javac -version
# 3. 编译
javac Hello.java
# 4. 运行
java Hello
你可以直接贴出:
java -versionjavac -versioncat /etc/centos-release)我可以一步一步帮你解决 ✅