CentOS 上 Java 日志报错是一个很常见但原因很多样的问题。为了帮你精准定位,我按最常见场景给你归纳,并给出排查思路 + 示例。你可以对照看看属于哪一类。
报错示例:
bash: java: command not found
或
Unsupported major.minor version 52.0
排查:
java -version
which java
解决:
yum install -y java-1.8.0-openjdk
报错示例:
JAVA_HOME is not set
解决:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$JAVA_HOME/bin:$PATH
可以写入:
/etc/profile
报错示例:
Permission denied
java.io.FileNotFoundException
排查:
ls -ld /var/log/your-app
解决:
chown -R appuser:appuser /var/log/your-app
chmod -R 755 /var/log/your-app
⚠️ 不要直接用 root 跑 Java 服务
报错示例:
Could not read configuration file
log4j:ERROR Could not find appender
常见原因:
排查:
ps -ef | grep java
看是否包含:
-Dlogging.config=xxx
报错示例:
No space left on device
排查:
df -h
解决:
rm -f 旧日志文件
journalctl --vacuum-time=7d
df -i
小文件太多也会导致 Java 写不了日志。
报错示例:
java.lang.OutOfMemoryError: Java heap space
解决:
java -Xms512m -Xmx1024m -jar app.jar
现象:
排查 SELinux:
getenforce
临时关闭测试:
setenforce 0
✅ 第一步:看 Java 进程
ps -ef | grep java
✅ 第二步:找日志路径
ls /var/log
ls logs/
✅ 第三步:看最后 50 行
tail -n 50 catalina.out
tail -n 50 app.log
✅ 第四步:搜索 ERROR
grep -i error app.log
你可以直接贴出:
cat /etc/centos-release
java -version
我可以逐行帮你分析,指出具体是哪一行配置或环境问题。