JSP在Ubuntu中如何调试
小樊
45
2025-12-20 04:18:03
在 Ubuntu 上调试 JSP 的高效流程
一 环境准备与验证
安装 JDK 11 (或你项目所需的版本)并验证:
命令:sudo apt update && sudo apt install openjdk-11-jdk
验证:java -version、javac -version
安装 Apache Tomcat 9 (Ubuntu 仓库包)并验证:
命令:sudo apt install tomcat9 tomcat9-admin
验证:sudo systemctl status tomcat9(应显示 active/running)
确认应用部署位置与日志路径:
部署目录:/var/lib/tomcat9/webapps/your_app/
日志目录:/var/log/tomcat9/ (常用文件:catalina.out )
二 远程调试 Tomcat 步骤
配置 Tomcat 以开启 JPDA 远程调试:
编辑:/usr/share/tomcat9/bin/catalina.sh
在文件靠前位置添加(放在其他 CATALINA_OPTS 设置之后或之前均可,避免覆盖):
export JPDA_ADDRESS=8000
export JPDA_TRANSPORT=dt_socket
说明:Ubuntu 的 tomcat9 包使用 catalina.sh 的 JPDA 参数来启用调试端口,无需修改 server.xml 的 debug 属性。
以调试模式启动 Tomcat:
命令:sudo systemctl restart tomcat9(包脚本会自动读取 JPDA 环境变量并监听 8000 端口)
在 IDE 中远程附加调试器(以 IntelliJ IDEA 为例):
Run/Debug Configurations → 新建 Remote JVM Debug
Host:localhost ,Port:8000
在 JSP 对应的 Servlet/Java 代码 上设置断点(JSP 运行在容器中被编译为 Servlet,断点应下在生成的或你编写的 Java 类中)
访问触发断点的页面(如 http://localhost:8080/your_app/your.jsp ),IDE 将捕获断点并支持单步、查看变量等
常见问题排查:
端口占用:sudo ss -lntp | grep 8000,必要时更换端口并同步修改 JPDA_ADDRESS
无法连接:确认 Tomcat 处于运行状态且监听 8000 ,以及本机防火墙未拦截
断点不生效:确认断点打在可执行的 Java 代码上(如 Servlet 的 doGet/doPost 或工具类),JSP 页面本身的脚本片段断点需要容器支持且不一定稳定,建议转为在后端代码中断点
三 无断点的日志与常见问题定位
查看实时日志以快速定位错误:
命令:tail -f /var/log/tomcat9/catalina.out
关注异常栈、类加载失败、JSP 编译错误、数据库连接等关键信息
校验部署与依赖:
确认 JSP 文件 在正确目录:/var/lib/tomcat9/webapps/your_app/
第三方依赖应放入:/var/lib/tomcat9/webapps/your_app/WEB-INF/lib/
权限设置:sudo chown -R tomcat:tomcat /var/lib/tomcat9/webapps/your_app/
其他要点:
修改后重启:sudo systemctl restart tomcat9
浏览器缓存干扰:使用无痕模式或强制刷新(Ctrl+F5 )
四 开发工具与进阶建议
常用工具:Eclipse IDE for Java EE / IntelliJ IDEA (支持 Dynamic Web Project、Tomcat 集成与远程调试)、Maven/Gradle (依赖管理)、Git (版本控制)、MySQL/Workbench (数据库及管理)、JDB/VisualVM (命令行/可视化诊断)
实践建议:
使用 Maven 管理依赖与构建,减少因 jar 冲突导致的问题
将关键业务与校验逻辑放在 Servlet/Service/DAO 层,便于断点与单测覆盖
生产环境关闭调试端口(不设置 JPDA_ADDRESS),或限制来源 IP,避免安全风险