一尘不染

在java中NoClassDefFoundError 异常是如何发生的?

java NoClassDefFoundError

在java中NoClassDefFoundError 异常是如何发生的?怎样避免?


阅读 534

收藏
2020-01-07

共1个答案

一尘不染

这可能是由于编译时和运行时之间的类路径不匹配导致的,但不一定是正确的。

在这种情况下,请务必牢记两个或三个不同的异常:

java.lang.ClassNotFoundException 此异常表明在类路径上找不到该类。这表明我们正在尝试加载类定义,并且该类在类路径中不存在。

java.lang.NoClassDefFoundError 此异常表明JVM在其内部类定义数据结构中查找了类的定义,但未找到。这与说无法从类路径中加载不同。通常,这表明我们以前曾尝试从类路径中加载类,但由于某种原因而失败-现在我们正尝试再次使用该类(由于上次失败,因此需要对其进行加载),但是我们甚至不打算尝试加载它,因为我们无法更早加载它(并且合理地怀疑我们会再次失败)。较早的故障可能是ClassNotFoundException或ExceptionInInitializerError(指示静态初始化块中的故障)或许多其他问题。关键是,NoClassDefFoundError不一定是类路径问题。

2020-01-08