public static void main(String... ignored) {
for (int i = 0; i < 3; i++) {
try {
new BrokenClass();
} catch (Throwable t) {
System.out.println(t);
}
}
}
static class BrokenClass {
static {
if (true)
throw new AssertionError();
}
}
在Java 7上打印
java.lang.AssertionError
java.lang.NoClassDefFoundError: Could not initialize class Main$BrokenClass
java.lang.NoClassDefFoundError: Could not initialize class Main$BrokenClass
# 1 楼答案
这里有一篇好文章可能会对你有所帮助。它列出了13件你可以考虑去寻找罪魁祸首的事情。p>
ClassNotFoundException: A List of Dumb Things to Check
# 2 楼答案
那你就不应该出错了。出现该错误的另一个原因是,该类是由子类装入器装入的,并且位于类路径中,但父类装入器试图访问它(假设委托模型是父类优先)。在这种情况下,类由JVM加载,但程序无法访问它
仔细想想,根据类加载器的实例化和使用方式,还有一些更复杂的场景可能会导致类加载异常Commons logging遭受了这些问题的困扰,我接受这些问题的次数比我愿意承认的要多。如果你想看的话,有一个excellent article可以突出这些场景
# 3 楼答案
我会查一下你所有的类都是在哪个目录下建立的。我猜你会发现你的班级不见了
编辑:正如@Hot Licks notes一样,你从一个坏掉的类中得到的错误是NoClassDefFoundError
在Java 7上打印