8

現在、ApacheTomcat5.5.16を使用してLuceneベースの検索APIを提供しています。

最近、サーブレットクラス内でいくつかの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にもっと説明的なエラーの場所を提供させるにはどうすればよいですか?

4

3 に答える 3

21

問題のクラスがデバッグ情報を使用してコンパイルされていない限り、Tomcatはより詳細な情報を提供できません。このデバッグ情報がないと、JVMはエラーが発生したコード行を判別できません。

編集:コマンドラインで実行するときに-g オプションを指定することにより、この情報を含めるようコンパイラーに要求できます。javacこのオプションは、 JavacAntタスクdebugのパラメーターを使用して指定することもできます。

于 2009-06-03T13:51:44.987 に答える
4

クラスにデバッグ情報を追加する必要があります。オプションでそれらをコンパイルします-g

javac -g YourServlet.java
于 2009-06-03T14:01:07.183 に答える
0

JITコンパイラがクラスを最適化したときに、ソースが不明な場所が発生する可能性があります。その時点で、ソース情報は失われます。元の場所を取得するには、サーバーを再起動してテストを再試行してください。ほとんどの場合、ソース内の場所を取得します

于 2009-06-03T13:54:20.130 に答える