ClassNotFoundException和ClassDefNotFoundException之间有什么区别

时间:2014-05-02 11:30:25

标签: java oracle noclassdeffounderror classnotfoundexception

ClassNotFoundExceptionClassDefNotFoundException之间有什么区别我知道它们都是Exception的子类。

从这个问题得到ClassNotFoundException的一些解释。 What is the difference between NoClassDefFoundError and ClassNotFoundException?

我为ClassDefNotFoundException阅读了Java doc,并说:

  当在OWB类型系统中找不到类的定义时,抛出

ClassDefNotFoundException

请详细说明以上声明,我不知道OWB打字系统。分类和提出这些例外的时候究竟有什么区别。

2 个答案:

答案 0 :(得分:1)

ClassNotFoundException是Java的核心例外。

ClassDefNotFoundException是一个" Oracle Warehouse Builder"异常(很可能只包装ClassNotFoundException)。

答案 1 :(得分:0)

当ClassLoader找不到报告的类时,抛出ClassNotFoundException。这通常意味着class is missing from the CLASSPATH

假设我们有一个名为X的类引用了类Y.Classloader加载了类X,它现在加载它经过linking phase,它经过三个不同的子阶段。

  1. 验证相
  2. 准备相
  3. 解决相。
  4. 现在当它经过Resolve-phase并且这个阶段尝试解析Y的引用时,不幸的是它找不到类Y的定义,那么对于类Y它将是ClassDefNotFoundException并且它将包装类X的'ClassNotFoundException'。