guo*_*opi 5 java debugging jsp 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");
}
}
%>
Run Code Online (Sandbox Code Playgroud)
在上面的jsp文件中,我在“ out.print(” test1“);”处设置断点。但它不会中断。
如何调试InnerClass?谢谢。
您的代码似乎没问题,除了第二个断点也不起作用,因为该方法仅从method_in_inner_class. 问题是调试 JSP 有点棘手,因为您不是在调试 Java 类。
检查您的服务器是否兼容JSR45的调试。
\n如果是,请确保您已正确配置 IDE 和服务器:
\n\n\n对于 Intellij 中的 JSP 调试,有一些配置必须按顺序进行。Intellij 始终允许您在 JSP 行上添加断点这一事实并不一定意味着您\xe2\x80\x99 已经配置了 JSP 调试。下面我参考Intellij 8配置,对于以前的版本,您将需要执行类似的操作,因为概念是相同的。
\n为了启用 JSP 调试,您必须执行两个步骤:在项目中设置 Web 应用程序配置并添加 Web 应用程序服务器配置。
\nWeb 应用程序配置:为了进行 JSP 调试,您的项目结构中必须有一个 \xe2\x80\x9cweb\xe2\x80\x9d 构面,指向正确的 web.xml 文件。根据您使用的 Web 应用程序结构的类型,Intellij 可能会自动检测该构面(无论如何都要检查它做了什么),或者您可能必须手动添加它。请记住在\xe2\x80\x9cJava EE构建设置\xe2\x80\x9d选项卡中设置为可用的\xe2\x80\x9c创建Web Facet分解目录\xe2\x80\x9d; 如果您不想\xe2\x80\x99 重复,一个技巧就是启用它并指向您已经存在的目录。
\n(Web)应用程序服务器:转到\xe2\x80\x9ceditconfigurations\xe2\x80\x9d,您必须在配置中添加应用程序服务器,而不是像其他应用程序一样将Web服务器作为应用程序启动。这样Intellij就能够拦截JSP调用。在应用程序服务器列表中,您应该有默认的 Tomcat。在执行此操作之前,请确保已安装本地 Tomcat,并在添加 Web 应用程序服务器时指向该安装。最后一个技巧是转到 \xe2\x80\x9cDeployment\xe2\x80\x9d 选项卡,然后选择您在上一步中配置的相同方面作为 \xe2\x80\x9cDeployment source\xe2\x80\x9d。
\n如果您想使用另一个 Web 应用程序服务器,则可以使用相同的配置,我使用最新的 Caucho Resin 版本对其进行了测试,并且调试工作正常(对于之前的 Intellij 和 Resin 组合,它没有\xe2\x80\x99t)。
\n如果您没有在要添加的可用应用程序服务器列表中看到 Tomcat,请检查常规 Intellij 设置窗格中的插件:在最新版本中,越来越多的功能已变为 xe2x80x9cpluggablexe2 \x80\x9d,甚至非常基本的功能也可能被禁用;这个插件名为\xe2\x80\x9cTomcat集成\xe2\x80\x9d。
\n最后,JSP 文件需要位于 WEB-INF 下才能进行调试肯定是不正确的。
\n\n
也在这里如果您还没有全部准备好,
\n| 归档时间: |
|
| 查看次数: |
2127 次 |
| 最近记录: |