ClassDefNotFoundException

时间:2010-09-23 04:53:36

标签: java

什么是ClassDefNotFoundException和NoClassDefFoundError并解释这两者之间的差异?

3 个答案:

答案 0 :(得分:6)

通常,如果类无法初始化,则抛出NoClassDefFoundError

第一次使用某个类时,它正在初始化。如果由于某种原因失败,则抛出相关的异常。 http://java.sun.com/docs/books/jls/third_edition/html/execution.html#12.4

当再次使用该类时,已知它已损坏。不会再次尝试初始化。 JVM引发了神秘的NoClassDefFoundError。没有真正描述问题,可能会让诊断混乱。如果抛出ClassInitFailedError之类的东西会更好。

当您看到NoClassDefFoundError时,您应该向后搜索日志,找到该类无法初始化的根本原因(希望它已记录)


标准Java lib中没有ClassDefNotFoundException,所以我不知道你在说什么。

答案 1 :(得分:2)

在类路径中找不到类时抛出

ClassNotFoundExceptionNoClassDefFoundErrornew无法实例化类时发生,因为jvm无法初始化类。它可能是构造函数抛出异常,或静态块抛出,或版本不匹配。

答案 2 :(得分:-2)

核心Java - 什么是ClassDefNotFoundException和...

http://www.geekinterview.com/question_details/47825