プロが教えるわが家の防犯対策術!

JSPでNullPointerExceptionが出たのですが、初めて見るエラーなので、
どういうものなのか、どなたか教えてください。
スタックトレースは以下です。

メッセージ java.lang.NullPointerException

説明 The server encountered an internal error that prevented it from fulfilling this request.

例外

org.apache.jasper.JasperException: java.lang.NullPointerException
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:502)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:430)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
accession.filter.SessionFilter.doFilter(SessionFilter.java:97)
accession.filter.ReferFilter.doFilter(ReferFilter.java:39)
accession.filter.TimeoutFilter.doFilter(TimeoutFilter.java:23)
accession.filter.EncodeFilter.doFilter(EncodeFilter.java:10)

原因

java.lang.NullPointerException
org.apache.jsp.Use.Select.SendSelect_jsp._jspService(SendSelect_jsp.java:93)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
accession.filter.SessionFilter.doFilter(SessionFilter.java:97)
accession.filter.ReferFilter.doFilter(ReferFilter.java:39)
accession.filter.TimeoutFilter.doFilter(TimeoutFilter.java:23)
accession.filter.EncodeFilter.doFilter(EncodeFilter.java:10)

原因一行目の「SendSelect_jsp.java:93」は何というファイルの93行目のことですか?
SendSelect_jsp._jspServiceというのは・・・?
このようなエラー(_jspServiceが原因の最初にあるもの)は初めてで、
調べてはみたのですが、同じようなエラーを見つけられなかったので、
教えてください。

JSPがSendSelect.jspで、SendSelect.javaを使っています。
宜しくお願い致します。

A 回答 (2件)

>SendSelect_jsp.javaというファイルは見つかりません。



これは、あなたが作成したJSPファイルを元に、サーブレットコンテナが自動生成したサーブレットのソースコードです。JSPというのは、サーブレットコンテナ(Tomcatなどのことです)がそれを読み込んでサーブレットに変換して動かします。つまり、JSPのソースコードを解析して、それと同じ働きをするサーブレットのソースコードを生成し、コンパイルしてJSPファイル名のアドレスにルーティングする、といった作業を行なっているわけです。

このソースコードは、JSPファイルから機械的に生成されますから、このソースコードでエラーが発生しているというのは、すなわち元になっているJSPでエラーが発生していると考えるべきです。

とりあえず、SendSelect.jspというJSPがあると思いますので、それを調べましょう。Eclipseなどからサーブレットコンテナを起動しているのであれば、デバッグモードで実行することでエラー発生時の状況を詳しく調べられると思います。

普通にTomcatを起動して動かしている場合は、面倒くさいですが、その中のスクリプトレットを最後のところから少しずつ削除するなりコメントアウトするなりしてリロードしていけば、どの部分でエラーが起こっているか見つけられると思いますよ。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
詳しく説明していただきありがとうございました。
勉強を始めたばかりでしたので、非常に為になりました。

>サーブレットコンテナが自動生成したサーブレットのソースコードです。
SendSelect_jsp.javaはサーブレットのことだったんですね!!

Eclipseは使わずTomcat(Apacheと連携)を使用しています。
>その中のスクリプトレットを最後のところから少しずつ削除するなりコメントアウトするなりして
原因が見つかりました!
プログラム自体にミスがいくつかありました・・・。
無事、表示できるようになりました^^

ご回答ありがとうございました。助かりました。

お礼日時:2013/02/01 10:48

> NullPointerExceptionが出たのですが、初めて見るエラーなので



Javaで一番見る例外だと思うんですが。
この例外は、nullが期待されていないところにnullが使われたときに発生します、
a.method0() としたときにa=null、とか
b.method1(c) としたときに、cがnullで、b.method1の引数としてnullを期待していない、とか

> 原因一行目の「SendSelect_jsp.java:93」は何というファイルの93行目のことですか?

「SendSelect_jsp.java」というファイルです。

> SendSelect_jsp._jspServiceというのは・・・?

SendSelect_jspクラスの_jspServiceメソッドだと思われます。

これらは、既存のモジュールのものです。
そのモジュールのバグの可能性はありますが、それよりは、自作プログラム中での使い方に問題があるケースが多いです。

例えば、
c=a.method0() ; // エラー時にnullを返す
でエラーになっているのに、それを確認せず
b.method1(c) ; // nullは期待していない
のように使ってしまっている、とか。
b.method1自体が例外を返さなくても、そこから呼ばれたmethod2から呼ばれたmethod3から呼ばれた....と深いところから例外が返ってくることもあります。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございました。

>「SendSelect_jsp.java」というファイルです。
>SendSelect_jspクラスの_jspServiceメソッドだと思われます。
SendSelect_jsp.javaというファイルは見つかりません。

>これらは、既存のモジュールのものです。
>そのモジュールのバグの可能性はありますが、それよりは、自作プログラム中での使い方に問題があるケースが多いです。
既存モジュールだったのですね!

>深いところから例外が返ってくることもあります。
なるほど・・・

NullPointerExceptionの原因の一番目に、初めて既存モジュールが表示されたため、
混乱していましたが、
よく見る例外と同じようなので、もう一度じっくりコードとにらめっこしてきます。

ご回答ありがとうございました。

お礼日時:2013/01/31 10:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています