Подтвердить что ты не робот

Получение фактического номера строки jsp из номера строки трассировки стека?

Вот стек:

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

Это то, что я делаю:

  • Получить номер строки из stacktrace, в этом случае 128.
  • Найдите файл showcustomer_jsp.java (и не совсем очевидно посмотреть в /var/run/tomcat-6/Catalina/localhost/_/org/apache/jsp).
  • Откройте его и перейдите к строке 128.
  • Теперь найдите файл .jsp для всего, что вы нашли в строке 128 в файле _jsp.java.
  • Boom! Все готово!

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

4b9b3361

Ответ 1

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

Ответ 2

Я не думаю, что ты можешь. JSP файл скомпилирован в сервлет и не запускается напрямую. Поскольку исключение выбрано из этого сервлета, строка, содержащаяся в трассировке стека, является той, что принадлежит классу. Исходная строка в JSP теряется в этой точке.

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

Ответ 3

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