在 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 enable tomcat9
- 验证服务:sudo systemctl status tomcat9;访问 http://localhost:8080 出现欢迎页即正常
二 本地调试步骤 Eclipse 或 IntelliJ IDEA
- 准备项目
- 创建 Dynamic Web Project(Eclipse)或 Maven/Gradle Web 项目(IDEA),将 JSP 放入 Web 内容目录(如 WebContent 或 src/main/webapp)。
- 添加 Tomcat 运行时:Eclipse 在 Preferences → Server → Runtime Environments 添加 Apache Tomcat v9;IDEA 在 Project Structure → SDKs/Application Servers 配置 Tomcat 安装路径。
- 以调试方式运行
- Eclipse:右键项目 → Debug As → Debug on Server,选择配置好的 Tomcat;IDEA:Run/Debug Configurations 新建 Tomcat Server → Local,部署应用后点击 Debug。
- 断点与热部署
- 在 JSP 的 scriptlet/声明/表达式或关联的 Servlet/Filter/Listener 中设置断点;浏览器访问对应页面触发断点,IDE 进入调试视图(变量、栈、表达式求值)。
- 使用 热部署(如 Eclipse 的自动发布或 IDEA 的 HotSwap)提升迭代效率;涉及类结构变更时重启应用。
三 远程调试 Tomcat 进程
- 开启调试端口
- 编辑 /usr/share/tomcat9/bin/catalina.sh,在文件靠前位置加入:export JPDA_ADDRESS=8000;export JPDA_TRANSPORT=dt_socket
- 重启 Tomcat:sudo systemctl restart tomcat9(将以 JPDA 模式监听 8000 端口)
- IDE 附加调试
- Eclipse:Run → Debug Configurations → Remote Java Application,Host 填 localhost,Port 8000,选择项目源码后 Debug。
- IDEA:Run/Debug Configurations → Remote JVM Debug,Host localhost,Port 8000,选择模块类路径后 Debug。
- 访问 http://localhost:8080/your-app/page.jsp 触发断点,IDE 将捕获执行。
四 日志与常见问题排查
- 查看日志定位错误
- 实时查看:tail -f /var/log/tomcat9/catalina.out
- 其他日志:/var/log/tomcat9/localhost*.log、manager.*.log、host-manager.*.log 等
- 常见问题速查
- 应用未生效:确认已部署到 /var/lib/tomcat9/webapps/,必要时重启 Tomcat(sudo systemctl restart tomcat9)
- 依赖缺失:将 JAR 放入 WEB-INF/lib/
- 权限问题:sudo chown -R tomcat:tomcat /var/lib/tomcat9/webapps/your_app/;sudo chmod -R 755 /var/lib/tomcat9/webapps/your_app/
- 端口占用:检查 8080/8000 是否被占用(ss -ltnp | grep -E ‘8080|8000’),必要时调整端口或释放占用
- 浏览器缓存:使用无痕模式或强制刷新(Ctrl+F5)
五 实用建议与工具
- 开发工具链:JDK、Apache Tomcat、Eclipse/IntelliJ IDEA、Maven/Gradle、Git、MySQL/PostgreSQL、VisualVM/JDB 等,可显著提升编码与调试效率。
- 版本兼容:确保 JDK 与 Tomcat 版本匹配(如 Tomcat 9 建议使用 JDK 8/11);必要时在 IDE 中显式设置 Project SDK 与 Language Level。