2

遅延読み込み用のデータベース接続マネージャーのコードに 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 ) この問題の解決方法を教えてください

4

1 に答える 1