我可以在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? 感谢。
答案 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下才能进行调试。
如果你还没准备好,here也可能是一些有趣的配置。