Получить фактический номер строки JSP из номера строки трассировки стека? - PullRequest
31 голосов
/ 20 августа 2009

Вот трассировка стека:

...
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. Теперь найдите в файле .jsp все, что вы нашли в строке 128 в файле _jsp.java.
  5. Boom! Вы сделали!

Пожалуйста, есть ли более простой способ сделать это?

Ответы [ 3 ]

4 голосов
/ 07 сентября 2009

Я нашел эту страницу в Eclipse WTP FAQ, в которой объясняется, как настроить Eclipse, чтобы вы могли перейти к сгенерированному Java-коду, щелкнув по трассировке стека.

2 голосов
/ 20 августа 2009

Не думаю, что ты можешь. Файл JSP скомпилирован в сервлет и не запускается напрямую. Поскольку исключение выдается из этого сервлета, строка в трассировке стека - это строка из класса. На этом этапе исходная строка в JSP теряется.

Обычно лучше всего избегать написания кода или генерирования исключений из jsp, инкапсулировать вашу логику в сервлеты и теги JSP и использовать JSTL для потока управления (if, forEach и т.

0 голосов
/ 10 февраля 2017

Раньше я программировал на Lex и Yacc, которые генерировали бы код на C, и вы могли включить директивы препроцессора #line для отладки. Когда что-то происходило в сгенерированном коде c, тогда среда IDE была достаточно умна, чтобы открыть соответствующий файл lex или yacc, а не сгенерированный код c. Surly

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...