CentOS 上 JSP 无法启动的常见原因与排查路径
一 环境与版本不兼容
java -version 与 javac -version 确认为 64 位 JDK 8;catalina.sh version 查看 Tomcat 版本。$JAVA_HOME/jre/lib/tools.jar 是否存在;在 catalina.sh 或 setenv.sh 中确保 JAVA_HOME 指向 JDK 而非 JRE。二 编译与类加载失败
JasperException: Unable to compile class for JSP,日志指向生成的 Java 文件里无法解析 java.util.Map$Entry、java.io.ObjectInputStream 等类型,多由 JDK 不匹配/缺失 或编译参数不当引起。ClassNotFoundException: org.apache.jsp.xxx_jsp,常见于 JSP 生成的 class 文件丢失或被清理,或应用未正确部署。$CATALINA_BASE/logs/catalina.out 与 localhost.<date>.log,定位是编译期还是运行期异常。work/Catalina/localhost/<app>/org/apache/jsp 目录是否有最新的 .java/.class 文件生成。work 或应用目录放到不受清理影响的位置。三 文件权限与目录问题
tomcat 用户执行:ls -ld work/ $CATALINA_BASE/webapps/ROOT,确保可写。setenforce 0 验证是否为 SELinux 问题,生产环境请改为正确的策略放行。server.xml 的 Host/Context 与应用实际路径一致。四 端口与防火墙限制
netstat -tlnp | grep 8080 检查 8080/8009 是否被 Tomcat 正确监听;端口冲突会导致访问失败。firewall-cmd --add-port=8080/tcp --permanent && firewall-cmd --reload。五 快速定位步骤
tail -n 200 $CATALINA_BASE/logs/catalina.out、localhost.<date>.log、host-manager.<date>.log。java -version、javac -version、catalina.sh version,确保 JDK 8 与 Tomcat 7.0.75+/8/9 匹配。work/Catalina/localhost/<app>/org/apache/jsp/*.class 已生成且未过期。ls -ld work/ webapps/,必要时 setenforce 0 做 A/B 验证。curl -I http://127.0.0.1:8080/ 与服务器外网访问对比,配合 firewall-cmd 与云安全组排查。