温馨提示×

JSP在Ubuntu上的调试方法

小樊
34
2025-11-28 12:10:23
栏目: 编程语言

在 Ubuntu 上调试 JSP 的高效方法

一 环境准备与快速验证

  • 安装 JDK 与 Tomcat 9(Ubuntu 20.04/22.04 推荐 OpenJDK 11):
    • 安装命令:sudo apt update && sudo apt install -y openjdk-11-jdk tomcat9
    • 验证:java -version、javac -version、sudo systemctl status tomcat9
  • 放置与访问应用:
    • 将应用或 JSP 放入 /var/lib/tomcat9/webapps/your_app/,访问 http://localhost:8080/your_app/your.jsp
  • 日志与常见问题速查:
    • 查看日志:tail -f /var/log/tomcat9/catalina.out
    • 若报类或依赖缺失,确认 WEB-INF/lib 下已放置依赖 JAR;必要时 sudo systemctl restart tomcat9;浏览器清缓存或使用无痕模式再试。

二 远程调试 Tomcat 步骤(推荐)

  • 配置 Tomcat 以开启 JPDA 远程调试:
    • 编辑 /usr/share/tomcat9/bin/catalina.sh,在文件靠前位置加入:
      • export JPDA_ADDRESS=8000
      • export JPDA_TRANSPORT=dt_socket
    • 说明:Ubuntu 包管理器安装的 Tomcat 通常已内置 JPDA 启动支持,无需修改 server.xml 的“debug”属性。
  • 以调试模式启动 Tomcat:
    • 方式 A:sudo systemctl stop tomcat9 后执行 /usr/share/tomcat9/bin/catalina.sh jpda start
    • 方式 B:直接执行 sudo /usr/share/tomcat9/bin/catalina.sh jpda start(若端口未被占用)
  • 在 IDE 中附加调试器(Eclipse/IntelliJ IDEA 通用思路):
    • 新建远程调试配置,类型为 Remote JVM Debug,主机 localhost,端口 8000
    • 将断点设置在 Servlet/Filter/Java Bean 等可编译类上(JSP 在运行期会转为 Servlet,断点应下在对应的 Java 源码)
    • 启动调试会话,浏览器触发请求,IDE 将命中断点并可查看变量、栈帧与单步执行
  • 常见问题排查:
    • 端口占用:ss -lntp | grep 8000;更换 JPDA_ADDRESS 或释放占用进程
    • 无法连接:确认 Tomcat 处于运行状态(ps -ef | grep tomcat),以及本机防火墙/云安全组放行 8000
    • 版本兼容:确保 JDK 与 Tomcat 9 版本匹配(如 OpenJDK 11 + Tomcat 9)。

三 不依赖 IDE 的日志与问题定位

  • 增强日志输出:
    • 在 JSP/Servlet 中使用 SLF4J/Log4J 输出关键变量与执行路径,便于在生产环境定位问题
    • 结合 catalina.out 与 localhost 日志(/var/log/tomcat9/)交叉验证请求处理链路
  • 文件与权限核对:
    • 确认 JSP 在 /var/lib/tomcat9/webapps/your_app/,依赖 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/
  • 缓存与发布问题:
    • 清理工作目录与缓存:sudo rm -rf /var/lib/tomcat9/work/Catalina/localhost/your_app
    • 修改后重启:sudo systemctl restart tomcat9;浏览器清缓存或使用无痕模式访问。

四 常用工具与版本建议

  • 开发/调试工具:Eclipse IDE for Java EEIntelliJ IDEANetBeans
  • 运行与依赖:Apache Tomcat 9OpenJDK 11Maven/Gradle(管理依赖与构建)
  • 辅助工具:JDB(命令行调试)、VisualVM(监控与抽样分析)、Git(版本控制)
  • 数据库与驱动:MySQL/PostgreSQL 与对应 JDBC 驱动(放置在 WEB-INF/lib)。

0