在 Debian 上 Tomcat 日志报错通常不是单一原因,而是环境、权限、配置或应用问题导致的。下面我从常见原因 → 排查思路 → 典型错误示例三部分给你一个系统性的说明。
Debian 上 Tomcat 多通过 systemd / 专用用户(tomcat) 运行,而不是 root。
典型表现
Permission denied常见目录
/var/log/tomcat9/
/opt/tomcat/logs/
排查
ls -ld /var/log/tomcat9
ps aux | grep tomcat
修复示例
sudo chown -R tomcat:tomcat /var/log/tomcat9
sudo chmod 750 /var/log/tomcat9
Debian 可能同时安装多个 Java 版本。
典型报错
UnsupportedClassVersionErrorjava.lang.UnsupportedOperationException排查
java -version
update-alternatives --config java
建议
| Tomcat | Java |
|---|---|
| 9 | Java 8 / 11 |
| 10 | Java 11+ |
| 11 | Java 17+ |
Debian 默认安全策略较严。
典型报错
Address already in use
排查
sudo netstat -tlnp | grep 8080
sudo ss -tlnp | grep 8080
解决
尤其是 log4j / jul / logback 混用。
典型问题
ClassNotFoundException: org.apache.juli.ClassLoaderLogManager检查
/etc/tomcat9/logging.properties
Debian 使用 systemd,可能限制:
查看
systemctl status tomcat9
journalctl -u tomcat9
常见修复
sudo systemctl edit tomcat9
添加:
[Service]
LimitNOFILE=65536
重点日志
/var/log/tomcat9/catalina.out
# 1. 看 Tomcat 状态
systemctl status tomcat9
# 2. 看 systemd 日志
journalctl -u tomcat9 -xe
# 3. 看 Tomcat 主日志
tail -n 200 /var/log/tomcat9/catalina.out
# 4. 看权限
ls -l /var/log/tomcat9
# 5. 看 Java 版本
java -version
java.io.FileNotFoundException: /var/log/tomcat9/catalina.out (Permission denied)
✅ 原因:Tomcat 用户无写权限
java.net.BindException: Address already in use
✅ 原因:8080 端口被占用
Unsupported major.minor version 61.0
✅ 原因:用 Java 17 编译,却跑在 Java 8 上
你可以直接贴出:
cat /etc/os-release)我可以逐行帮你分析并给出修复命令 ✅