如何获取来自已编译 JSP 的堆栈跟踪以包含来自实际 JSP 文件的行号,而不是中间 Servlet java 文件?
我正在使用 Jetty 8。我目前正在以编程方式占用 Jetty 实例。
(如果对行号支持的东西感兴趣,我使用 Eclipse 进行编码,我不太了解 JSR-45 SMAP 逻辑 - 它是“边车”文件,还是此信息放在实际的类文件中?)
将调试,断点工作,重新。JSP?
如何获取来自已编译 JSP 的堆栈跟踪以包含来自实际 JSP 文件的行号,而不是中间 Servlet java 文件?
我正在使用 Jetty 8。我目前正在以编程方式占用 Jetty 实例。
(如果对行号支持的东西感兴趣,我使用 Eclipse 进行编码,我不太了解 JSR-45 SMAP 逻辑 - 它是“边车”文件,还是此信息放在实际的类文件中?)
将调试,断点工作,重新。JSP?
更新:2017 年 6 月
Jetty 9 不再使用 Glassfish JSP。
它使用 Apache Jasper JSP,同样的规则适用如下。
原始答案
Jetty 使用 Glassfish 项目中的 JspServlet 来管理其所有 JSP 处理。
JspServlet 上有 3 个初始化参数(参见${jetty.home}/etc/webdefault.xml
内容)可能会有所帮助。
将所有这些开发时间设置设置为 true,您应该会看到更多信息。以及有中间源文件可以参考。这个生成的源文件包含一行注释掉的 jsp 源代码,然后生成的 java 源文件也可以用来反向引用你的 jsp 的哪一行导致了异常。
另请注意,Glassfish 的 JspServlet 也使用 java.util.logging 作为其底层日志记录基础设施。要查看 JspUsage 的所有细节(包括 jsp 行号),请尝试在 FINEST 级别为“org.apache.jasper”包空间设置 java.util.logging。