Ubuntu 下 JSP 调试实操指南
一 环境准备与验证
- 安装 JDK(建议 JDK 8/11/17):sudo apt update && sudo apt install openjdk-11-jdk
- 验证:java -version、javac -version
- 安装 Tomcat 9(Ubuntu 仓库包):sudo apt install tomcat9 tomcat9-admin
- 启动与验证:sudo systemctl start tomcat9;sudo systemctl status tomcat9;访问 http://localhost:8080
- 日志路径:/var/log/tomcat9/(常用 catalina.out、localhost..log)用于排查启动与运行期错误。
二 远程调试 Tomcat 步骤(IDE 断点生效)
- 配置 Tomcat 以开启 JPDA 远程调试
- 编辑:/usr/share/tomcat9/bin/catalina.sh
- 在文件靠前位置加入:export JPDA_ADDRESS=8000;export JPDA_TRANSPORT=dt_socket
- 说明:Ubuntu 仓库版 Tomcat 使用 catalina.sh 的 JPDA 环境变量来启用调试端口,默认监听 8000。
- 以调试模式启动 Tomcat
- 方式 A:sudo /usr/share/tomcat9/bin/catalina.sh jpda start
- 方式 B:sudo systemctl stop tomcat9 后执行 sudo /usr/share/tomcat9/bin/startup.sh(若已设置 JPDA 环境变量,startup.sh 也会以调试模式启动)
- 在 IDE 中远程附加
- IntelliJ IDEA:Run/Debug Configurations → Remote JVM Debug → Host: localhost,Port: 8000 → Debug
- Eclipse:Debug Configurations → Remote Java Application → Host: localhost,Port: 8000 → Debug
- 触发断点
- 浏览器访问对应应用(如 http://localhost:8080/yourapp/your.jsp),IDE 会在断点处暂停,可查看变量、单步执行。
- 常见问题
- 端口被占用:lsof -i:8000;换端口或释放占用后重启 Tomcat
- 无法连接:确认以 jpda 启动、防火墙放行 8000,以及 IDE 主机/端口配置正确。
三 不依赖 IDE 的排查与日志定位
- 查看实时日志:tail -f /var/log/tomcat9/catalina.out(错误堆栈、类加载、启动失败原因)
- 确认应用部署路径:默认 /var/lib/tomcat9/webapps/yourapp/;JSP 通常在 webapps/yourapp/ 或 webapps/yourapp/WEB-INF/ 下对应位置
- 检查依赖库:第三方 JAR 放入 WEB-INF/lib/
- 文件权限:sudo chown -R tomcat:tomcat /var/lib/tomcat9/webapps/yourapp/;sudo chmod -R 755 /var/lib/tomcat9/webapps/yourapp/
- 重启生效:sudo systemctl restart tomcat9
- 浏览器缓存:开发阶段禁用缓存或使用无痕模式访问,避免旧错误页面干扰。
四 常见问题与快速修复
- 端口冲突
- 8080 被占用:ss -tlnp | grep 8080;修改 /etc/tomcat9/server.xml 中 为未占用端口并重启
- 8000 被占用:换 JPDA_ADDRESS=9000 后重启 Tomcat,并在 IDE 中同步改为 9000
- 404 找不到 JSP
- 确认应用已部署且结构正确(ROOT 或应用名目录、WEB-INF、web.xml 等),访问路径与部署目录一致
- 类找不到或依赖缺失
- 检查 WEB-INF/lib 是否包含所需 JAR,MANIFEST.MF 的 Class-Path 是否正确
- 权限问题
- Tomcat 需要对应用目录有读权限,必要时执行 chown/chmod(见上)
- 缓存与旧版本
- 清理 work/Catalina/localhost/ 工作目录并重启 Tomcat,浏览器强制刷新/无痕模式访问。