遅延読み込み用のデータベース接続マネージャーのコードに Initialization On Demand Holder イディオムを実装しようとしています
Class ConfigurationAgent{
private ConfigurationAgent(){
String baseDir = "XYZ";
}
private static class LazyLoader{
private static final ConfigurationAgent instance = new ConfigurationAgent();
}
public static ConfigurationAgent getInstance(){
ConfigurationAgent cfg = LazyLoader.instance;
return cfg;
}
}
ここで、以下を使用して別のクラスからこの ConfigurationAgent のインスタンスを呼び出しています。
ConfigurationAgent agent = ConfigurationAgent.getInstance();
この場合、ExceptionInInitializerError に続いて java.lang.NoClassDefFoundError エラーが発生します。
私の推測では、「LazyLoader.instance」という呼び出しがこの問題を引き起こしているため、静的クラス LazyLoader が正しくロードされていません。(この問題は、次の wiki リンクで解決策なしで言及されていますhttp://en.wikipedia.org/wiki/Initialization_on_demand_holder_idiom ) この問題の解決方法を教えてください