2012-02-28 7 views
0

私のoracleデータベースを照会し、テーブルからメニュータイトルのリストを返すWebアプリケーションを作成しようとしていますが、ページに移動すると、以下の領域がスローされます。WebアプリケーションのNull.Pointer.Exception

type Exception report 

message 

description The server encountered an internal error() that prevented it from fulfilling this request. 

exception 

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) 

root cause 

java.lang.NullPointerException 
oracle.DatabaseConnector.selectAllMenus(DatabaseConnector.java:63) 
org.apache.jsp.menus_jsp._jspService(menus_jsp.java:113) 
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) 

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.35 logs. 

以下は、データベースを照会するJavaクラス内のコードの問題部分です。しかし、なぜこれが上記のエラーの原因になるのか分かりません。誰かが見て、問題があるかどうかを見ることができますか?

public MenuList selectAllMenus(String ordering) { 
    MenuList list = null; 

    try { 
     String strQuery = "SELECT title" 
       + " FROM menus" 
       + " ORDER BY " + ordering; 
     PreparedStatement stmt = conn.prepareStatement(strQuery); 

     results = stmt.executeQuery(); 

     list = new MenuList(results); 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 

    return list; 
} 

これは、ログファイルにしたものです:あなたは、あなたのログで見ることができ

28-Feb-2012 14:40:57 org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Servlet.service() for servlet jsp threw exception 
java.lang.NullPointerException 
at oracle.DatabaseConnector.selectAllMenus(DatabaseConnector.java:63) 
at org.apache.jsp.menus_jsp._jspService(menus_jsp.java:113) 
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388) 
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) 
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) 
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:877) 
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:594) 
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1675) 
at java.lang.Thread.run(Thread.java:662) 
+1

ラインがあります'DatabaseConnector.java:63'で正確に? – Nikhil

+0

問題の行はPreparedStatementです。stmt = conn.prepareStatement(strQuery); – user667430

+0

Ahh ..そして、@vulkanioは言ったように、この時点ではあなたの' conn'でなければなりませんまた、彼が言ったように、 'Exception e'のキャッチブロックを置いて' e.printStackTrace() 'を実行すると、 eエラーが発生します。 – Nikhil

答えて

1

Apache Tomcat/6.0.35 logs

をしかし、エラーメッセージ自体はかなり明確である:DB接続がnullの場合、接続文字列/パラメータが正しくない可能性があります。

0

connが開いていると仮定します。

スタックトレースを印刷する代わりに、エラーメッセージを印刷しないでください。

+0

'printStackTrace'にはメッセージが含まれています。システム生成の 'NullPointerException'にはメッセージがありません。最初のスタックトレース行番号があなたの情報源です。 –

0

ライン:

PreparedStatement stmt = conn.prepareStatement(strQuery); 

接続を作成するには、このような何かをしようと、 "connの" 任意の場所

に作成されていない:

public class MyConnection { 
Connection conn; 
String username; 
String password; 
public Connection getConnection(){ 
    try { 
     String url = "jdbc:mysql://localhost/yourDBName?"; 
     Class.forName("com.mysql.jdbc.Driver"); 
     try { 
      conn = (Connection) DriverManager.getConnection(url,username,password); 
     } catch (Exception e) { 
     System.out.println(e); 
     } 

    } catch (SQLException e) { 
     System.out.println(e); 
    } 
    return conn; 
} 

} 
2

あなたはMySQLのDBを使用している願っています。

正しいMySQL Java Connectorを外部ライブラリとして追加し、外部サーバーとしてのTomcat(Eclipseのプロジェクトのビルドパス)

(あなたはまた、あなたのビルド・パスにあなたの$ TOMCAT_HOME/$のCATALINA_HOMEのlibフォルダ内のすべてのライブラリをコピーすることができます。

これは、この問題を解決する必要があります。

感謝。