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 没有正确加载,因此调用“LazyLoader.instance”会出现此问题。(此问题在以下 wiki 链接中提到,但没有任何解决方案http://en.wikipedia.org/wiki/Initialization_on_demand_holder_idiom)请让我知道如何解决此问题

4

1 回答 1

2

正如对问题的评论中已经写的那样:很可能在构造函数中抛出了一个异常,然后显示为java.lang.NoClassDefFoundError. 检查堆栈跟踪。

(我遇到了同样的问题,所以帮助仔细研究了构造函数,我喜欢接受答案的问题,所以这是我的综述。)

于 2014-08-11T04:22:25.667 回答