Ubuntu下JSP项目调试方法汇总
在开始调试前,需确保Ubuntu系统已安装以下基础工具:
sudo apt update && sudo apt install openjdk-11-jdk安装(建议使用JDK 8及以上版本,兼容性更好);安装后通过java -version和javac -version验证是否成功。sudo apt install tomcat9 tomcat9-admin安装(或其他版本如Tomcat 8/10);启动服务sudo systemctl start tomcat9,并设置开机自启sudo systemctl enable tomcat9。IDE提供了可视化的调试界面,适合新手及复杂项目,以下以IntelliJ IDEA为例说明:
File -> New -> Project from Existing Sources,导入JSP项目(如Maven/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会暂停程序执行。Variables窗口查看变量值;右键选择Evaluate Expression计算表达式。若偏好命令行,可使用JDK自带的jdb工具调试JSP对应的Java类(需先将JSP编译为Servlet):
javac编译项目中的Java文件(如MyServlet.java),生成.class文件。jdb MyServlet(替换为你的类名),启动调试器。stop in MyServlet.doGet(针对doGet方法设置断点)。run,程序会在断点处暂停。step(单步执行)、next(跳过方法调用)、print variableName(查看变量值)、cont(继续执行)等命令控制调试流程。通过日志记录程序运行信息,适合长期监控和复杂问题排查:
pom.xml(Maven)或build.gradle(Gradle)中添加日志框架依赖(如Log4j 2或SLF4J),例如Log4j 2的依赖:<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.20.0</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.20.0</version>
</dependency>
src/main/resources目录下创建log4j2.xml文件,设置日志级别(如DEBUG)和输出目标(控制台/文件),例如:<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="DEBUG">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>
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文件(如header.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,此时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.<date>.log(应用日志),获取运行时错误信息(如NullPointerException、ServletException),定位问题根源。