背景: java.io.File类有一个静态内部类方法,如下所示:
LazyInitialization.temporaryDirectory();
[编辑以添加更多代码] 我的下面代码最终会调用上面的那行代码。在temporaryDirectory()方法中抛出了一个异常,在我的情况下这是可以接受/预期的。
try {
File tempFile = File.createTempFile("aaa", "aaa");
} catch (Exception e) {
// handle exception
}
然后,当我再次调用相同的方法(createTempFile)时,我会得到一个“java.lang.NoClassDefFound错误 - 无法初始化类java.io.File $ LazyInitialization”
问题: 我认为内部类LazyInitialization应该在静态方法被调用时由类加载器加载,即使内部方法抛出异常。那么,为什么第二次调用时会看到NoClassDefFound错误?原始假设是否不正确?