为什么我的 servlet 堆栈跟踪显示我的类“来源未知”?
-
09-09-2019 - |
题
我目前正在使用 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 为我提供更具描述性的错误位置?
解决方案
Tomcat 无法为您提供更详细的信息,除非相关类是使用调试信息进行编译的。如果没有这些调试信息,JVM 就无法确定错误发生在哪一行代码上。
编辑: 您可以通过指定以下方式要求编译器包含此信息 -g
选项 跑步时 javac
在命令行上。您还可以使用以下命令指定此选项 debug
的参数 Javac Ant 任务.
其他提示
您必须添加调试信息到你的类。带有选项-g
编译它们:
javac -g YourServlet.java
当JIT编译器具有优化类发生位置的未知源即可。在这一点上源信息丢失。让原来的位置,重新启动服务器,然后重试测试。大多数时候,你会在你的源获取位置
不隶属于 StackOverflow