• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Struts2でのStaticイニシャライザ)

Struts2でのStaticイニシャライザ

このQ&Aのポイント
  • Struts2のインターセプターでStaticイニシャライザを実行するとエラーになる問題について
  • Staticイニシャライザをintercept()メソッド内に記述した場合はエラーが発生せず絶対パスを取得できる
  • Tomcat再起動時にgetRealPath()の部分で例外が発生し、java.lang.ExceptionInInitializerErrorが発生する

質問者が選んだベストアンサー

  • ベストアンサー
  • racene
  • ベストアンサー率70% (21/30)
回答No.1

staticイニシャライザの初期化順序の問題だと推測されます。 おそらく、CheckValueInterceptorクラスのstaticイニシャライザが呼ばれたとき、 まだServletActionContextクラスが初期化されていないのではないでしょうか。 contextがnullでないか等をチェックしてみてください。 *** staticイニシャライザの初期化順序は必ずしも意図通りとはならないので、注意が必要です。 例えば、以下のプログラムはFooクラスよりも先にTestクラスのstaticイニシャライザが呼ばれるため、 nullと出力されます。 public class Test { static { System.out.println(Foo.foo()); } public static void main(String[] args) {} } class Foo { public static String foo() { return bar; } static { bar = "Hello, world!"; } private static String bar = null; }

unko347
質問者

お礼

ご指摘の通り context がnullとなっておりNullPointerExceptionが 発生しておりました。 従って、Staticイニシャライザの中で読み込むファイルの絶対パスを取得する のはあきらめることにして イニシャライザの中ではResourceBundleクラスを使ってプロパティファイルの 中身を読み込むことにしました。

関連するQ&A

専門家に質問してみよう