为什么我的servlet stacktrace为我的类显示“Unknown Source”?

时间:2009-06-03 13:49:51

标签: java exception servlets stack-trace nullpointerexception

我目前正在使用Apache Tomcat 5.5.16来提供基于Lucene的搜索API。

最近我在servlet类中有一些NullPointerExceptions。该类称为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 个答案:

答案 0 :(得分:21)

除非使用调试信息编译相关类,否则Tomcat无法为您提供更详细的信息。如果没有此调试信息,JVM无法确定发生错误的代码行。

编辑:您可以通过在命令行上运行-g时指定javac option来要求编译器包含此信息。您还可以使用Javac Ant taskdebug参数指定此选项。

答案 1 :(得分:4)

您必须向类中添加调试信息。使用选项-g编译它们:

javac -g YourServlet.java

答案 2 :(得分:0)

当JIT编译器优化了您的类时,可能会发生位置未知源。此时源信息丢失。获取原始位置,重新启动服务器并重试测试。大多数情况下,您将获得源中的位置