¿Por qué mi servlet StackTrace espectáculo “origen desconocido” para mis clases?
-
09-09-2019 - |
Pregunta
Actualmente estoy usando Apache Tomcat 5.5.16 para servir a una API de búsqueda basada en Lucene.
Últimamente he estado teniendo algunos NullPointerExceptions dentro de mi clase servlet. La clase se llama com.my_company.search.servlet.SearchServlet
.
Con ciertos tipos de entrada que puede crear de forma rutinaria una NullPointerException, pero estoy teniendo problemas para averiguar dónde se encuentra exactamente.
El StackTrace indica que el error está ocurriendo aquí:
com.my_company.search.servlet.SearchServlet.doGet(Unknown Source)
La fuente y los archivos .class para esta clase es todo en:
$TOMCAT_HOME/webapps/my_servlet/WEB-INF/classes/com/my_company/search/servlet/
Mi pregunta es, ¿cómo puedo obtener Tomcat me proporcione ubicaciones de error más descriptivos?
Solución
Tomcat no puede proporcionar información más detallada a menos que las clases en cuestión fueron compilados con información de depuración. Sin esta información de depuración, la JVM no puede determinar qué línea de código ha producido el error.
Editar Puede pedir al compilador que incluya esta información especificando el -g
opción cuando se ejecuta javac
en la línea de comandos. También puede especificar esta opción con el parámetro debug
de la javac Ant tarea .
Otros consejos
hay que añadir información de depuración en sus clases. compilar con la opción -g
:
javac -g YourServlet.java
la lata ubicación de origen desconocido se produce cuando el compilador JIT ha optimizado su clase. En ese momento se pierde la información de la fuente. para obtener la ubicación original, reinicie el servidor y vuelva a intentar la prueba. La mayoría de las veces obtendrá la ubicación de la fuente