You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在NetBeans与GlassFish中调试JSP代码?

解决GlassFish下NetBeans无法调试JSP中Java代码的问题

我之前切换到GlassFish时也碰到过一模一样的JSP调试问题,给你几个实用的排查和解决步骤:

1. 确认GlassFish以调试模式启动

  • 首先确保你在NetBeans中启动GlassFish时选择的是Debug模式,而非普通的Run模式。
  • 检查GlassFish的域名配置:打开glassfish/domains/[你的域名]/config/domain.xml,确认<java-config>下的debug-options处于开启状态,默认配置应该类似这样:
    <java-config debug-options="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9009" ...>
    
    如果端口9009被占用,可以改成其他未被使用的端口,同时在NetBeans的服务器配置里同步修改调试端口。

2. 开启GlassFish的JSP调试编译参数

GlassFish默认的JSP编译优化会丢弃调试信息,需要手动开启:

  • 找到GlassFish安装目录下的glassfish/domains/[你的域名]/config/web.xml
  • 找到名为jsp的Servlet配置,添加两个初始化参数:
    <servlet>
        <servlet-name>jsp</servlet-name>
        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
        <!-- 添加以下两个参数 -->
        <init-param>
            <param-name>compiler.debug</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>compiler.generate.classes</param-name>
            <param-value>true</param-value>
        </init-param>
        <!-- 保留原有其他参数 -->
    </servlet>
    
  • 修改完成后重启GlassFish,确保JSP编译时生成带调试符号的class文件。

3. 检查Maven项目的调试配置

  • 打开Web模块的pom.xml,确认maven-compiler-plugin的配置中开启了调试:
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
            <source>1.8</source> <!-- 替换为你的JDK版本 -->
            <target>1.8</target>
            <debug>true</debug>
            <debuglevel>lines,vars,source</debuglevel>
        </configuration>
    </plugin>
    
  • 右键Web项目 -> Properties -> Build -> Compiling,确认“Generate debugging info”处于勾选状态。

4. 清理重建并重新部署

旧的编译文件很可能是问题根源:

  • 在NetBeans中右键整个企业应用项目,选择Clean and Build
  • 手动删除GlassFish部署目录下的旧应用:glassfish/domains/[你的域名]/applications/[你的应用名称]
  • 重新部署项目到GlassFish,确保新的带调试信息的文件被部署。

5. 确认断点设置正确

  • JSP中的Java代码断点要打在<% %>标签内部的代码行上,不要打在HTML部分
  • 先访问一次目标JSP(触发JSP编译),再尝试调试——因为JSP是首次访问时才会编译成class文件,提前打断点可能无法关联到编译后的代码

内容的提问来源于stack exchange,提问作者Edwin Santos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:18:22