CentOS 上排查 JSP 错误的实用流程
一 快速定位 先看日志
二 常见错误与对应处理
| 症状 | 高频原因 | 排查要点 | 修复建议 |
|---|---|---|---|
| HTTP 500 – Unable to compile class for JSP | JDK 与 Tomcat 版本不匹配;JSP 语法/标签未闭合;依赖缺失(如 JSTL) | 查 catalina.out 的编译堆栈;核对 $JAVA_HOME 与 $CATALINA_HOME;确认 web.xml 中 JSP Servlet 映射未被改动 | 使用与 JDK 8 兼容的 Tomcat 8/9;修正 JSP 语法;在 WEB-INF/lib 放置 jstl.jar 与 standard.jar(或使用 Maven 依赖),避免用过期版本 |
| HTTP 500 – ClassNotFoundException: org.apache.jsp.xxx_jsp | 未生成 JSP 类;依赖未打包进 WEB-INF/lib;应用未正确部署 | 检查 work 目录是否生成类;核对 WEB-INF/lib 是否包含 JSTL 等依赖;确认 war 已完整解压 | 重新部署并确保依赖随应用打包;清理 work 目录后重启 Tomcat |
| HTTP 500 – 属性未正确闭合等解析错误 | JSTL/EL 使用不当;引号/标签未闭合 | 查看具体行号(如 “line: 43, column: 22”);逐行核对标签闭合与 EL 表达式 | 修正标签闭合、引号与转义;统一使用 JSTL 1.2 规范 |
| 访问空白页或偶发 500 | 应用启动期异常但被吞;代码未捕获异常 | 打开 catalina.out 全量日志;在 JSP 中加入简易错误输出(开发期) | 增加日志打印与异常处理;修复根因后重启 |
| 远程访问不了(页面打不开) | firewalld/iptables 未放行 8080;server.xml 配置限制;应用未部署成功 | 本地 curl http://127.0.0.1:8080 验证;检查 server.xml 的 Host/Context;核对防火墙 |
放行端口:firewall-cmd --add-port=8080/tcp --permanent && firewall-cmd --reload;修正配置并重新部署 |
三 环境与配置检查清单
四 最小化验证与一键排查命令
curl -I http://127.0.0.1:8080/curl -I http://127.0.0.1:8080/<你的应用>/<你的.jsp>ps -ef | grep tomcatss -lntp | grep :8080tail -n200 -f $CATALINA_HOME/logs/catalina.outtail -n200 -f $CATALINA_HOME/logs/localhost.<日期>.logjournalctl -u tomcat -ftail -n200 /var/log/messagesfirewall-cmd --add-port=8080/tcp --permanent && firewall-cmd --reloadrm -rf $CATALINA_HOME/work/Catalina/localhost/<应用名>/*$CATALINA_HOME/bin/shutdown.sh && $CATALINA_HOME/bin/startup.sh