Почему мой servlet stacktrace показывает “Неизвестный источник” для моих классов?
-
09-09-2019 - |
Вопрос
В настоящее время я использую Apache Tomcat 5.5.16 для обслуживания поискового API на основе Lucene.
В последнее время у меня возникли некоторые NullPointerExceptions внутри моего класса servlet.Класс называется com.my_company.search.servlet.SearchServlet
.
С определенными типами входных данных я могу регулярно создавать исключение NullPointerException, но у меня возникают проблемы с определением, где именно оно находится.
Трассировка стека указывает на то, что здесь возникает ошибка:
com.my_company.search.servlet.SearchServlet.doGet(Unknown Source)
Исходные файлы и .class для этого класса находятся в:
$TOMCAT_HOME/webapps/my_servlet/WEB-INF/classes/com/my_company/search/servlet/
Мой вопрос в том, как я могу заставить Tomcat предоставить мне более описательные местоположения ошибок?
Решение
Tomcat не может предоставить вам более подробную информацию, если только рассматриваемые классы не были скомпилированы с отладочной информацией.Без этой отладочной информации JVM не может определить, в какой строке кода произошла ошибка.
Редактировать: Вы можете попросить компилятор включить эту информацию, указав -g
вариант при запуске javac
в командной строке.Вы также можете указать этот параметр, используя debug
параметр для Задача Javac Ant.
Другие советы
вы должны добавить отладочную информацию в свои классы.скомпилируйте их с помощью опции -g
:
javac -g YourServlet.java
местоположение неизвестного источника может возникать, когда JIT-компилятор оптимизировал ваш класс.В этот момент исходная информация теряется.чтобы получить исходное местоположение, перезапустите сервер и повторите свой тест.Большую часть времени вы будете получать местоположение в вашем источнике