- - PR -
ExceptionInInitializerErrorが出てしまいます。
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-09-06 16:25
はじめまして、ちゃこと申します。
環境 PC Win2000 eclipse3.01 lomboz.301 tomcat5.0.28 j2sdk 1.4.2_07 struts1.2.4 postgresql8.0.0 上記の環境で開発をしております。 ビジネスロジックでの記述で、インスタンスを生成するところで エラーが出てしまいます。 --------------------------------------------- java.lang.ExceptionInInitializerError jp.xxx.xxx.xxx.action.GraphYearBloodPressureAction.executeAction(GraphYearBloodPressureAction.java:110) jp.xxx.xxx.xxx.action.BaseAction.execute(BaseAction.java:57) org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421) org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226) org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164) org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397) javax.servlet.http.HttpServlet.service(HttpServlet.java:689) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:156) --------------------------------------------- 一つのソースコードの行数とかも関係しているのでしょうか? いままで、メソッドを追加してもエラーがでなかったのですが、 同じようなビジネスロジックを一つ用意しても 同じ現象が出てしまうようになりました。 ソースは以下のとおりです。 +++++ アクションサーブレット +++++ package jp.xxx.xxx.xxx.action; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import jp.xxx.xxx.xxx.model.biz.BloodPressureManager; import jp.xxx.xxx.xxx.model.biz.OneYearFactory; import jp.xxx.xxx.xxx.model.biz.SevenDaysFactory; import org.apache.commons.beanutils.BeanUtils; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.validator.DynaValidatorForm; /** * Action クラス */ public final class GraphYearBloodPressureAction extends BaseAction { /** * Method execute * @param ActionMapping mapping * @param ActionForm form * @param HttpServletRequest request * @param HttpServletResponse response * @return ActionForward * @throws Exception */ public ActionForward executeAction( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { : : : : : 省略 : : : : : // 検索をする List list = null; try { BloodPressureYearDAO dao = new BloodPressureYearDAO(); list = bloodPressureManager.getListIntYear(empno, cal_y, cal_m, cal_d ,pp); //list = dao.findByEmpnoIntYear(empno, cal_y, cal_m, cal_d ,pp); } catch (Exception e1) { e1.printStackTrace(); } : : : : : 省略 : : : : : } +++++ ビジネスロジック部分 +++++ package jp.xxx.xxx.xxx.model.biz; import java.util.List; import jp.xxx.xxx.xxx.model.dao.BloodPressureYearDAO; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * Model クラス */ public class BloodPressureManager { : : : : : 省略 : : : : : public List getListIntYear(String empno, int cal_y, int cal_m, int cal_d, int pp) throws Exception { List list = null; try { ↓ここでエラーが出てしまいます list = new BloodPressureYearDAO().findByEmpnoIntYear(empno, cal_y, cal_m, cal_d ,pp); return list; } finally { log.info("検索処理終了"); } } : : : : : 省略 : : : : : } +++++ データベース利用部分のソース +++++ package jp.xxx.xxx.xxx.model.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import java.util.List; import java.util.ResourceBundle; import jp.xxx.xxx.xxx.model.biz.DataSourceFactory; import jp.xxx.xxx.xxx.model.biz.OneMonthFactory; import jp.xxx.xxx.xxx.model.biz.OneYearFactory; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class BloodPressureYearDAO { /** リソースバンドル */ private static ResourceBundle bundle = ResourceBundle .getBundle("jp.xxx.xxx.xxx.model.dao.sql"); // SQL文をリソースバンドルより取得 private static final String SQL_SELECT_BYSEVENDAYS = bundle.getString("SQL_KENKO_SELECT_BYSEVENDAYS_BLOOD"); private static final String SQL_SELECT_BYAVG = bundle.getString("SQL_KENKO_SELECT_BYAVG_BLOOD"); private static final String SQL_SELECT_BYYEAR = bundle.getString("SQL_KENKO_SELECT_BYYEAR_BLOOD"); private static final String SQL_SELECT_BYTIMEYEAR = bundle.getString("SQL_KENKO_SELECT_BYYEARTIME_BLOOD"); private static final String SQL_SELECT_BYYEARAVG = bundle.getString("SQL_KENKO_SELECT_BYYEARAVG_BLOOD"); private static Log log = LogFactory.getLog(BloodPressureYearDAO.class); public List findByEmpnoIntYear(String empno, int cal_y, int cal_m, int cal_d, int pp) throws Exception { Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; try { List list = new ArrayList(); OneYearFactory oneYearFactory = new OneYearFactory(); List dt_year = oneYearFactory.getOneYearList(pp, cal_y, cal_m, cal_d); // 検索用の日付をセットする。 String thisYear = (String) dt_year.get(0); String oneYearAgo = (String) dt_year.get(1); int ii[] = new int[37]; int vv[][] = new int[5][37]; String dd = null; int i = 0; conn = DataSourceFactory.getDataSource().getConnection(); //SQLステートメントオブジェクトの作成 stmt = conn.prepareStatement(SQL_SELECT_BYYEAR); stmt.setString(1, empno); stmt.setString(2, oneYearAgo); stmt.setString(3, thisYear); // select文の実行 rs = stmt.executeQuery(); while (rs.next()) { dd = rs.getString("ym"); i = Integer.parseInt(dd.substring(5, 7)) - 1; int j = 0; j = Integer.parseInt(rs.getObject("BP02_TIME").toString()); ii[i * 3 + j] = j; vv[1][i * 3 + j] = rs.getInt("hi"); vv[2][i * 3 + j] = rs.getInt("low"); vv[3][i * 3 + j] = rs.getInt("pulse"); vv[4][i * 3 + j] = rs.getInt("sugar"); } list.add(ii); list.add(vv); log.info("取得成功"); return list; } finally { try { if (rs != null){ rs.close(); } if (stmt != null){ stmt.close(); } if (conn != null){ conn.close(); } } catch (Exception e) { e.printStackTrace(); } } } どうか、アドバイスをよろしくお願い致します。 [ メッセージ編集済み 編集者: ちゃこ 編集日時 2005-09-06 17:57 ] | ||||||||
|
投稿日時: 2005-09-06 16:42
BloodPressureYearDAO のクラスを読み込むところで発生しているのであれば、そのクラスのスタティックイニシャライザで実行時例外やエラーが発生していることになります。
ExceptionInInitializerError.getCause().printStackTrace() すれば根本原因を表示できるかと存じます。 static ブロックや static 変数の初期化を行っている場所のスタックトレースがとれます。 | ||||||||
|
投稿日時: 2005-09-06 16:53
インギ様
早速の返信ありがとうございます。 >BloodPressureYearDAO のクラスを読み込むところで >発生しているのであれば、そのクラスのスタティックイニシャライザで >実行時例外やエラーが発生していることになります。 そうです。読み込むところで発生しています。 >ExceptionInInitializerError.getCause().printStackTrace() > すれば根本原因を表示できるかと存じます。 >static ブロックや static 変数の初期化を行っている場所のスタックトレースがとれます。 早速、確認したいのですが、上記の利用方法がわからないのです。 たとえば、どの場所で、どのように記述したらよろしいのでしょうか? 申し訳ございません。教えてくださいませ。 | ||||||||
|
投稿日時: 2005-09-06 16:57
としているところで、ExceptionInInitializerError をキャッチしてみます。(あくまで暫定的に)
どうでしょう?なにか表示されましたか? | ||||||||
|
投稿日時: 2005-09-06 16:59
クラス ExceptionInInitializerError 使用例 # リロードするの忘れていました。(*_ _) [ メッセージ編集済み 編集者: じゃんぬねっと 編集日時 2006-10-12 11:29 ] | ||||||||
|
投稿日時: 2005-09-06 17:06
インギ様
ご伝授ありがとうございます。 出ました!! --------------------------------------- java.util.MissingResourceException: Can't find resource for bundle java.util.PropertyResourceBundle, key SQL_KENKO_SELECT_BYYEARAVG_BLOOD at java.util.ResourceBundle.getObject(ResourceBundle.java:326) at java.util.ResourceBundle.getString(ResourceBundle.java:286) at jp.xxx.xxx.xxx.model.dao.BloodPressureYearDAO.<clinit>(BloodPressureYearDAO.java:36) at jp.xxx.xxx.xxx.model.biz.BloodPressureManager.getListIntYear(BloodPressureManager.java:146) at jp.xxx.xxx.xxx.action.GraphYearBloodPressureAction.executeAction(GraphYearBloodPressureAction.java:110) at jp.xxx.xxx.xxx.action.BaseAction.execute(BaseAction.java:57) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164) at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397) at javax.servlet.http.HttpServlet.service(HttpServlet.java:689) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) at filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:156) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929) at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) at java.lang.Thread.run(Thread.java:534) java.lang.NullPointerException at jp.xxx.xxx.xxx.model.biz.OneYearFactory.getAllAverageListYear(OneYearFactory.java:174) at jp.xxx.xxx.xxx.action.GraphYearBloodPressureAction.executeAction(GraphYearBloodPressureAction.java:128) at jp.xxx.xxx.xxx.action.BaseAction.execute(BaseAction.java:57) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164) at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397) at javax.servlet.http.HttpServlet.service(HttpServlet.java:689) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) at filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:156) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929) at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) at java.lang.Thread.run(Thread.java:534) 2005/09/06 17:01:42 jp.xxx.xxx.xxx.model.biz.SystemExceptionHandler execute 致命的: java.lang.NullPointerException at jp.xxx.xxx.xxx.action.GraphYearBloodPressureAction.executeAction(GraphYearBloodPressureAction.java:138) at jp.xxx.xxx.xxx.action.BaseAction.execute(BaseAction.java:57) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164) at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397) at javax.servlet.http.HttpServlet.service(HttpServlet.java:689) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) at filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:156) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929) at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) at java.lang.Thread.run(Thread.java:534) --------------------------------------- SQL文を書いているプロパティファイルがあるのですが、 それが、読み込めていないようです。 その辺を調査してみます。 [ メッセージ編集済み 編集者: ちゃこ 編集日時 2005-09-06 17:58 ] | ||||||||
|
投稿日時: 2005-09-06 17:25
申し訳ございません。
記述ミスでした。。(汗) 変更前 // SQL文をリソースバンドルより取得 private static final String SQL_SELECT_BYSEVENDAYS = bundle.getString("SQL_KENKO_SELECT_BYSEVENDAYS_BLOOD"); private static final String SQL_SELECT_BYAVG = bundle.getString("SQL_KENKO_SELECT_BYAVG_BLOOD"); private static final String SQL_SELECT_BYYEAR = bundle.getString("SQL_KENKO_SELECT_BYYEAR_BLOOD"); private static final String SQL_SELECT_BYTIMEYEAR = bundle.getString("SQL_KENKO_SELECT_BYYEARTIME_BLOOD"); private static final String SQL_SELECT_BYYEARAVG = bundle.getString("SQL_KENKO_SELECT_BYYEARAVG_BLOOD"); ↓ 変更後 // SQL文をリソースバンドルより取得 private static final String SQL_SELECT_BYSEVENDAYS = bundle.getString("SQL_KENKO_SELECT_BYSEVENDAYS_BLOOD"); private static final String SQL_SELECT_BYAVG = bundle.getString("SQL_KENKO_SELECT_BYAVG_BLOOD"); private static final String SQL_SELECT_BYYEAR = bundle.getString("SQL_KENKO_SELECT_BYYEAR_BLOOD"); private static final String SQL_SELECT_BYTIMEYEAR = bundle.getString("SQL_KENKO_SELECT_BYYEARTIME_BLOOD"); 処理が走るようになりました。 この後の作業が続けられます。 インギ様 じゃんぬねっと様 本当にありがとうございました(涙) | ||||||||
|
投稿日時: 2005-09-06 17:42
ExceptionInInitializerError はそれ自体のスタックトレースでは原因がわからないのでちょっと面倒ですよね。
解決したとのことでなによりです。 |