在Intellij Idea中调试JSP中的内部类

时间:2013-11-27 03:01:01

标签: java jsp debugging intellij-idea

我可以在JSP中调试内部类吗?

我的应用服务器是tomcat,我正在使用Intellij Idea。

jsp中的正常断点是可以的,但是InnerClass中的断点不起作用。

在我的测试jsp代码中:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.io.IOException" %>
<%
    new InnerClass().method_in_inner_class(out);
%>
<%!
    class InnerClass {
        void method_in_inner_class(JspWriter out) throws IOException {
            //set breakpoint under this line
            out.print("test1");
        }
    }
%>

在上面的jsp文件中,我将断点设置为“out.print(”test1“);” 但它并没有突破界限。

我如何调试InnerClass? 感谢。

1 个答案:

答案 0 :(得分:1)

您的代码似乎没有问题,除了第二个断点不起作用的事实,因为该方法仅从method_in_inner_class调用。问题是调试JSP有点棘手,因为你没有调试Java类。

根据JSR45检查您的服务器是否与调试兼容。

如果是,请确保您已正确配置IDE和服务器:

  

对于Intellij中的JSP调试,有一些配置必须按顺序排列。 Intellij总是允许您在JSP行上添加断点这一事实并不一定意味着您已经配置了JSP调试。在下面我指的是Intellij 8配置,w.r.t。在以前的版本中,您需要执行类似的操作,因为概念是相同的。

     

为了启用JSP调试,您必须执行两个步骤:在项目中设置Web应用程序配置并添加Web应用程序服务器配置。

     

Web应用程序配置:为了进行JSP调试,您必须在项目结构中有一个“web”方面,指向正确的web.xml文件。根据您使用的Web应用程序结构的类型,Intellij可能会自动检测构面(无论如何要检查它已完成的内容),或者您可能需要手动添加它。请记住在“Java EE构建设置”选项卡中设置为“创建Web构面爆炸目录”;如果你不想复制,只需启用它并指向你现有的目录。

     

(Web)应用程序服务器:转到“编辑配置”,您必须添加到应用程序服务器的配置,而不是像任何其他应用程序一样启动Web服务器。通过这种方式,Intellij将能够拦截JSP调用。在应用程序服务器列表中,您应该具有默认的Tomcat。在执行此操作之前,请确保已安装本地Tomcat,并在添加Web应用程序服务器时指向该安装。最后一个技巧是进入“部署”选项卡并选择“部署源”,这是您在上一步中配置的相同方面。

     

如果您想使用其他Web应用程序服务器,我使用相同的配置,我使用最新的Caucho Resin版本测试它,并且调试工作正常(它没有使用以前的Intellij和Resin组合)。

     

如果您没有在要添加的可用应用程序服务器列表中看到Tomcat,请检查常规Intellij设置窗格中的插件:在最新版本中,越来越多的功能变得“可插拔”,甚至是非常基本的功能可能被禁用;这个插件叫做“Tomcat集成”。

     

最后,JSP文件需要在WEB-INF下才能进行调试。

     

来源:JSP debugging in IntelliJ IDEA

如果你还没准备好,here也可能是一些有趣的配置。