Warum kommt die Servlet-Stacktrace-Show „Unknown Source“ für meine Klassen?
-
09-09-2019 - |
Frage
Ich bin derzeit mit Apache Tomcat 5.5.16 eine Lucene-basierten Suche API dienen.
In letzter Zeit habe ich einige Nullpointerexceptions in meiner Servlet-Klasse worden ist. Die Klasse wird com.my_company.search.servlet.SearchServlet
genannt.
Bei bestimmten Arten von Eingabe kann ich routinemäßig eine Nullpointer schaffen, aber ich habe Probleme, herauszufinden, wo genau es ist.
Der Stacktrace zeigt an, dass der Fehler wird auftreten hier:
com.my_company.search.servlet.SearchServlet.doGet(Unknown Source)
Die Quelle und .class-Dateien für diese Klasse ist alles in:
$TOMCAT_HOME/webapps/my_servlet/WEB-INF/classes/com/my_company/search/servlet/
Meine Frage ist, wie kann ich Tomcat mich mit kräftigeren Fehlerstellen zu schaffen bekommen?
Lösung
Tomcat können Sie nicht bieten detailliertere Informationen, es sei denn die Klassen in Frage mit Debug-Informationen kompiliert wurden. Ohne diese Debug-Informationen bestimmen die JVM kann nicht, welche Codezeile der Fehler aufgetreten ist auf.
Edit: Sie können die Compiler bitten, diese Information zu enthalten, indem die -g
Angabe Option wenn javac
auf der Kommandozeile ausgeführt wird. Sie können auch diese Option geben Sie den debug
Parameter des Javac Ant-Task verwenden.
Andere Tipps
müssen Sie Debugging-Informationen zu Ihren Klassen hinzuzufügen. kompilieren sie mit der Option -g
:
javac -g YourServlet.java
Die Lage unbekannte Quelle kann tritt auf, wenn der JIT-Compiler Klasse optimiert. An diesem Punkt werden die Quellinformationen verloren. die ursprüngliche Lage, den Server neu starten, und wiederholen Sie den Test zu erhalten. Die meiste Zeit werden Sie den Standort in Ihrer Quelle erhalten