Почему моя трассировка стека сервлетов показывает "Неизвестный источник" для моих классов? - PullRequest
8 голосов
/ 03 июня 2009

В настоящее время я использую Apache Tomcat 5.5.16 для обслуживания API поиска на основе Lucene.

В последнее время у меня есть некоторые исключения NullPointerException в моем классе сервлетов. Класс называется com.my_company.search.servlet.SearchServlet.

С определенными типами ввода я обычно могу создать исключение NullPointerException, но у меня возникают проблемы с определением, где именно оно находится.

StackTrace указывает, что здесь происходит ошибка:

com.my_company.search.servlet.SearchServlet.doGet(Unknown Source)

Все исходные файлы и файлы .class для этого класса:

$TOMCAT_HOME/webapps/my_servlet/WEB-INF/classes/com/my_company/search/servlet/

У меня вопрос: как я могу заставить Tomcat предоставить мне более наглядное описание мест ошибок?

Ответы [ 3 ]

21 голосов
/ 03 июня 2009

Tomcat не может предоставить вам более подробную информацию, если рассматриваемые классы не были скомпилированы с отладочной информацией. Без этой отладочной информации JVM не может определить, в какой строке кода произошла ошибка.

Редактировать: Вы можете попросить компилятор включить эту информацию, указав параметр -g при запуске javac в командной строке. Вы также можете указать эту опцию, используя параметр debug задачи Javac Ant .

4 голосов
/ 03 июня 2009

Вы должны добавить отладочную информацию в ваши классы. скомпилируйте их с параметром -g:

javac -g YourServlet.java
0 голосов
/ 03 июня 2009

неизвестный источник может возникнуть, когда JIT-компилятор оптимизировал ваш класс. В этот момент исходная информация теряется. чтобы получить исходное местоположение, перезапустите сервер и повторите тест. Большую часть времени вы получите местоположение в вашем источнике

...