Perché il mio servlet stacktrace spettacolo “Unknown Source” per le mie lezioni?
-
09-09-2019 - |
Domanda
Attualmente sto usando Apache Tomcat 5.5.16 per servire una ricerca API Lucene-based.
Ultimamente sto avendo alcuni NullPointerExceptions dentro la mia classe servlet. La classe si chiama com.my_company.search.servlet.SearchServlet
.
Con alcuni tipi di input che posso creare una routine NullPointerException, ma sto avendo problemi a capire esattamente dove si trova.
Lo StackTrace indica che il bug è in corso qui:
com.my_company.search.servlet.SearchServlet.doGet(Unknown Source)
Il file .class sorgente e per questa classe è tutto in:
$TOMCAT_HOME/webapps/my_servlet/WEB-INF/classes/com/my_company/search/servlet/
La mia domanda è, come posso ottenere Tomcat per fornire me con le posizioni di errore più descrittivo?
Soluzione
Tomcat non è in grado di fornire informazioni più dettagliate a meno che le classi in questione sono stati compilati con le informazioni di debug. Senza queste informazioni di debug, la JVM non è in grado di determinare quale riga di codice si è verificato l'errore.
Modifica Si può chiedere al compilatore di includere queste informazioni specificando il -g
opzione quando in esecuzione javac
sulla riga di comando. È inoltre possibile specificare questa opzione utilizzando il parametro debug
del Javac Ant compito .
Altri suggerimenti
è necessario aggiungere le informazioni di debug alle classi. li compilare con l'opzione -g
:
javac -g YourServlet.java
la lattina località sconosciuta fonte si verifica quando il compilatore JIT ha ottimizzato la vostra classe. A quel punto le informazioni di origine si perde. per ottenere la posizione originale, riavviare il server e ripetere il test. Il più delle volte si otterrà la posizione nell'origine