从堆栈跟踪行号中获取实际的 jsp 行号?

2022-09-01 11:06:36

下面是堆栈跟踪:

...
org.apache.jsp.showcustomer_jsp._jspService(showcustomer_jsp.java:128)
org.apache.jasper.runtime.HttpJspBase.service(Unknown Source)

这就是我所做的:

  1. 从堆栈跟踪中获取行号,在本例中为 128。
  2. 找到该文件(查找并不明显)。showcustomer_jsp.java/var/run/tomcat-6/Catalina/localhost/_/org/apache/jsp
  3. 打开它并转到第 128 行。
  4. 现在,在文件中搜索您在文件第 128 行找到的任何内容。.jsp_jsp.java
  5. 繁荣!大功告成!

拜托,有没有更简单的方法可以做到这一点?


答案 1

我在Eclipse WTP FAQ上找到这个页面,它解释了如何配置Eclipse,以便您可以转到生成的java代码,单击堆栈跟踪。


答案 2

我认为你做不到。JSP 文件被编译到 servlet 中,并且不直接运行。当异常从此 servlet 引发时,堆栈跟踪中的行是类中的行。此时,JSP 中的原始行将丢失。

通常最好避免编写代码或从 jsp 引发异常,并将逻辑封装在 servlet 和 JSP 标记中,并将 JSTL 用于控制流(if、forEach 等)。