- - PR -
Excelデータを読み込むWebアプリケーション
1
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-10-30 22:02
初めての書き込みですが、どうぞ宜しくお願いいたします。
Eclipseで、Excelデータを読みこんでブラウザで表示するWebアプリケーションを作っているのですが、 「java.lang.NullPointerException」というエラー表示が出て、成功しません。 Eclipseやサーバの設定がうまくいっていないのか、それぞれのバージョンの相性の問題なのか、 それともプログラムが原因なのか、判断がつかない状況で ぜひアドバイスをいただきたいと思っております。 なお開発にはLombozを使い、外部JARとしてPOIを設定しています。 ある本に、Lomboz3.0.1とTomcat5.0.28以降の組み合わせで、Eclipseから起動すると 上記のエラーが発生して正しく起動しない、と書かれておりましたので その本に書かれていた対処法を試したり、あるいはLombozやTomcatのバージョンをいろいろ 変えて試したりしましたが、状況は変わりませんでした。 あるいは、Eclipseの「ウインドウ」→「設定」の「Lomboz」→「ServerDefinitions」の 「Servertypes」を、“apache Tomcat v5.0.x”に変更しても 次に開くと“JBOSS v2.4.4”に戻ってしまっているのですが、この辺は影響しているのでしょうか? 試しに、Eclipse(やLomboz)を使わず、POIを利用したJSPプログラムを直接打って 実行したところ、エラーもなくExcelデータを読み込んで表示できました。 また、Eclipse+Lombozで、現在時刻を表示するようなプログラムでは エラーもなく正常に表示できました。 今まで試した環境は Eclipse:3.0.1, 3.1.1 Lomboz:3.0.1, 3.1RC2 Tomcat:5.0.27, 5.0.28, 5.5.9 などです。 よろしければ考えられる原因等のアドバイスをお教え下さい。 必要でしたら、プログラムや構成等も明記させていただきます。 どうぞ宜しくお願いいたします。 | ||||||||||||||||
|
投稿日時: 2005-10-30 22:11
どのようなコード・どのような操作によって 上記例外が発生するのでしょうか? また、例外時のスタックトレースを添付された方が 適切な回答が得られるのではと思います。 | ||||||||||||||||
|
投稿日時: 2005-10-31 10:35
ご返答いただき、ありがとうございました!
長くなってすみませんが、状況としましては *** EXDATA.java *** package packs; import java.io.IOException; import java.io.FileInputStream; import java.io.PrintWriter; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServlet; public class EXDATA extends HttpServlet { public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { //TODO Method stub generated by Lomboz PrintWriter out = response.getWriter(); FileInputStream in = new FileInputStream("/simple.xls"); String path = getServletContext().getRealPath("/simple.xls"); java.io.InputStream is = new java.io.FileInputStream(path); POIFSFileSystem fs = new POIFSFileSystem(is); is.close(); HSSFWorkbook wb = new HSSFWorkbook(fs); HSSFSheet sheet = wb.getSheetAt(0); HSSFRow row = sheet.getRow((short)0); HSSFCell cell = row.getCell((short)0); out.println(cell.getStringCellValue()); /* JSPへ */ request.setAttribute("cell", cell); getServletConfig() .getServletContext() .getRequestDispatcher("/output.jsp") .forward(request, response); } } *** output.jsp *** <%@ page language="java" pageEncoding="Windows-31J" %> <!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en"> <html> <head> <title>Lomboz JSP</title> </head> <body bgcolor="#FFFFFF"> <% /* サーブレットからの値を取得 */ String cell = request.getAttribute("cell").toString(); %> <% out.println (cell); %> </body> </html> として、Deploy時にエラーはありませんが、ブラウザでoutput.jspを確認するとエラー表示が出ます。 Tomcat5.5.9のログには 致命的: サーブレット jsp のServlet.service()が例外を投げました java.lang.NullPointerException at org.apache.jsp.output_jsp._jspService(org.apache.jsp.output_jsp:52) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Unknown Source) と書かれています。 長くなってすみませんが、おかしな箇所がございましたらぜひご指摘下さい。 どうぞ宜しくお願いいたします。 | ||||||||||||||||
|
投稿日時: 2005-10-31 12:15
もしかして、ブラウザのアドレスバーに入力したのは 「output.jsp」ですか?
JSPに対して直接アクセスすると、getAttributeの戻り値がnullになるはずです。 なので、nullに対してtoStringメソッドを実行する事により NullPointerExceptionが発生していると考えられます。 また、スタックトレースを見ると、
とありますが、コンパイル済みのJSPのソースが org.apache.jsp.output_jsp.javaとなっています。 52行目のステートメントを見れば、何を実行して例外が発生しているかを確認できます。 | ||||||||||||||||
|
投稿日時: 2005-10-31 13:23
アドバイスいただき、ありがとうございます!
ご指摘いただいた部分を研究してみます。 成功しましたら報告させていただきます。 |
1