我目前正在使用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为我提供更具描述性的错误位置?
答案 0 :(得分:21)
除非使用调试信息编译相关类,否则Tomcat无法为您提供更详细的信息。如果没有此调试信息,JVM无法确定发生错误的代码行。
编辑:您可以通过在命令行上运行-g
时指定javac
option来要求编译器包含此信息。您还可以使用Javac Ant task的debug
参数指定此选项。
答案 1 :(得分:4)
您必须向类中添加调试信息。使用选项-g
编译它们:
javac -g YourServlet.java
答案 2 :(得分:0)
当JIT编译器优化了您的类时,可能会发生位置未知源。此时源信息丢失。获取原始位置,重新启动服务器并重试测试。大多数情况下,您将获得源中的位置