发布于2026-07-27 阅读(0)
扫一扫,手机访问
在Ubuntu环境下调试JSP项目,看起来是个老生常谈的话题,但实际操作中很多开发者容易踩坑——要么是环境配置不对,要么是调试工具选错了思路。这里把几种主流的调试方法梳理了一遍,从IDE可视化调试到命令行、日志、浏览器工具,再到远程调试,基本覆盖了日常开发中的常见场景。核心目标只有一个:让你在遇到问题时,能快速定位并解决,而不是对着控制台干瞪眼。
在开始调试前,得先把基础环境搭好。Ubuntu下需要安装以下三样东西:
sudo apt update && sudo apt install openjdk-11-jdk。装完后记得用ja va -version和ja vac -version验证一下,确保环境变量正确。sudo apt install tomcat9 tomcat9-admin搞定。启动服务用sudo systemctl start tomcat9,如果想开机自启,再加一句sudo systemctl enable tomcat9。IDE的可视化调试界面最适合新手,也适合复杂项目。以IntelliJ IDEA为例,操作流程如下:
File → New → Project from Existing Sources,导入你的JSP项目(Ma ven或Gradle项目都可以)。Run → Edit Configurations,添加Tomcat Server → Local配置。指定Tomcat安装目录(比如/opt/tomcat),然后在Deployment标签页里添加项目的war包或exploded目录。index.jsp)或对应的Servlet代码行号旁边点击,出现红色圆点就是断点。Debug按钮(虫子图标),启动Tomcat进入调试模式。在浏览器里访问http://localhost:8080/your_project_name,触发断点后IDE会暂停程序执行。Step Over、Step Into、Step Out按钮单步执行代码;在Variables窗口查看变量值;右键选择Evaluate Expression可以计算任意表达式。如果你更习惯命令行,JDK自带的jdb工具也能派上用场。不过需要先把JSP编译成Servlet对应的Ja va类,然后才能调试。
ja vac编译项目中的Ja va文件(比如MyServlet.ja va),生成.class文件。jdb MyServlet(替换成你的类名),启动调试器。stop in MyServlet.doGet,对doGet方法设置断点。run,程序会在断点处暂停。step(单步执行)、next(跳过方法调用)、print variableName(查看变量值)、cont(继续执行)——这些命令基本够用了。日志调试适合长期监控和复杂问题排查,不用打断程序运行,直接在日志里找线索。
pom.xml或Gradle的build.gradle里添加日志框架依赖,比如Log4j 2或SLF4J。以Log4j 2为例:org.apache.logging.log4j log4j-core 2.20.0 org.apache.logging.log4j log4j-api 2.20.0 src/main/resources目录下创建log4j2.xml,设置日志级别和输出目标。例如:import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;public class MyServlet extends HttpServlet {private static final Logger logger = LogManager.getLogger(MyServlet.class);protected void doGet(HttpServletRequest request, HttpServletResponse response) {logger.debug("Received GET request from IP: " + request.getRemoteAddr());// 其他代码...}}logs/app.log),方便后续分析。前端与JSP交互的问题(比如JS错误、页面渲染异常)用浏览器开发者工具排查更直观。
F12或Ctrl+Shift+I。Console标签页,能看到JS错误、AJAX请求响应等信息。Sources标签页选择Overrides,勾选Enable Local Overrides,选择一个本地目录(比如~/overrides)。然后直接修改JSP文件中的代码(比如HTML结构或JS逻辑),保存后就会自动同步到Tomcat服务器,不用重启就能看到效果——这个技巧在调试样式或逻辑时特别实用。如果项目部署在远程Ubuntu服务器上,远程调试能让你像本地一样设置断点、查看变量。
catalina.sh文件(在$CATALINA_HOME/bin目录下),在文件开头添加JVM参数:export CATALINA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"$CATALINA_HOME/bin/startup.sh,这时Tomcat会在5005端口监听调试连接。Run → Edit Configurations,添加Remote JVM Debug配置。设置Host为服务器IP地址(比如192.168.1.100),Port为5005。Debug按钮,IDE会连接到远程Tomcat。然后在浏览器中访问远程JSP页面(比如http://192.168.1.100:8080/your_project),触发断点后就能开始调试了。System.out.println("变量值:" + variable),输出会出现在Tomcat控制台($CATALINA_HOME/logs/catalina.out),适合简单场景快速验证。catalina.out是主日志,localhost..log 是应用日志。运行时错误(比如NullPointerException、ServletException)都能在这里找到,定位问题根源的首选。