- ベストアンサー
Eclipse デバッグ エラー処理
Eclipseを使用しているのですが、原因が出てこないエラーなどが良く出てきます。 自力では、なんとも分からず、時間も消費してわからないでかなり困ってしまいます。 今回の場合は新しい処理をいれ、それがnullということは分かるのですが、 ソースは、コピーを少し変えただけで、どこがおかしいか特定できませんでした。 デバッグ(見方とかあまり分からず、触るのも2回目くらい)を利用して箇所を特定しようと、 ステップオーバーしてるうちに、ページが見つかりませんでしたとなってしまいます。 わけが分かりません。 今回の場合どうしたらよいか、 デバックについて勉強になるもの、 又は、エラーパターンの参考になるようなHPや書籍などありましたら教えてください、 よろしくお願いします。 致命的: サーブレット jsp のServlet.service()が例外を投げました java.lang.NullPointerException at org.apache.jsp.keiji.Top_jsp._jspService(Top_jsp.java:149) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) at java.lang.Thread.run(Unknown Source)
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>今回の場合は新しい処理をいれ、それがnullということは分かるのですが、 >ソースは、コピーを少し変えただけで、どこがおかしいか特定できませんでした。 言葉の意味がよくわかりませんが、今までエラーもなく動作していたコードに何か追加したらエラーが出るようになったということでしょうか? であれば追加したコードに問題がある可能性が高いので追加したコードの部分をトレースしてみるしかないでしょう。 >致命的: サーブレット jsp のServlet.service()が例外を投げました >java.lang.NullPointerException >at org.apache.jsp.keiji.Top_jsp._jspService(Top_jsp.java:149) jspをコンパイルしたファイルが生成されているはずなのでそのファイルの中身を参照し、149行目付近(大抵の場合該当行かその手前)のコードを追ってみて、問題がないか確認してみるとか。 NullPointerExceptionは大抵作成したコードに問題があるケースがほとんどです。(引数で受け取った値をノーチェックで何かの関数に受け渡している、とか)
その他の回答 (2)
- gigamac
- ベストアンサー率57% (8/14)
↓の補足です。 >>ワークスペースのフォルダのどこかに・・・ ワークスペースのフォルダに「.metadata」というフォルダがあると思いますが、そこのフォルダで検索→「Top_jsp.java」で検索してみてください。ただ、eclipse+WTPプラグインの場合です。
- gigamac
- ベストアンサー率57% (8/14)
Top.jspでエラーが出ていると思います。JSPは一旦~.javaにソース変換後、コンパイルされ~.classという形になり実行されます。eclipseのWTPプラグインを使用した場合ですが、JSPのデバッグは、ワークスペースのフォルダのどこかに「Top_jsp.java」というjavaファイルが作成されると思います。その149行目辺りを見直してみてください。なんとなくTop.jspとTop_jsp.javaで対応が取れるかと思います。 ちなみに、エラーパターンとか、参考書とかおっしゃっておりますが、経験値が一番重要かと思います。エラーや不具合は、状況で解決策がケースバイケースなので、まとめるのは難しいと思います。その各様々な状況に応じる為に「教えて!goo」とかあるのかとか思ったりします。
お礼
アドバイスありがとうございます。 work/org.apache.jsp.パッケージにありました。 警告がたくさんあります・・。 値がどうわたってるかなど気をつけなければと思います。 経験をつんで身に着けたいと思います。 ありがとうございます。
補足
>今回の場合は新しい処理をいれ、それがnullということは分かるのですが、 >ソースは、コピーを少し変えただけで、どこがおかしいか特定できませんでした。 アドバイスありがとうございます。 同じような処理なのでソースをコピーして利用しました。 変数名を変えて、しっかり確認したのですが、おかしいところは見つからず、エラー行が特定されないため、分かりません。