为什么我在Java中获得NoClassDefFoundError?NoClassDefFoundError当我运行我的Java应用程序时,我得到了一个。这通常是什么原因?
3 回答
阿波罗的战车
TA贡献1862条经验 获得超6个赞
虽然这可能是由于编译时和运行时之间的类路径不匹配,但它不一定是真的。
在这种情况下,重要的是要保持两到三个不同的例外:
java.lang.ClassNotFoundException此异常表示在类路径中找不到该类。这表明我们正在尝试加载类定义,并且类在路径上不存在。java.lang.NoClassDefFoundError此异常表示JVM在其内部类定义数据结构中查找了类的定义但未找到它。这与说它无法从类路径加载不同。通常这表明我们之前尝试从类路径加载一个类,但由于某种原因它失败了 - 现在我们正在尝试再次使用该类(因此需要加载它,因为它上次失败了),但是我们'甚至没有尝试加载它,因为我们之前没有加载它(并且合理地怀疑我们会再次失败)。较早的失败可能是ClassNotFoundException或ExceptionInInitializerError(表示静态初始化块中的失败)或任何其他问题。关键是,NoClassDefFoundError不一定是类路径问题。
慕慕森
TA贡献1856条经验 获得超17个赞
这是代码来说明java.lang.NoClassDefFoundError。有关详细说明,请参阅Jared的答案。
NoClassDefFoundErrorDemo.java
public class NoClassDefFoundErrorDemo {
public static void main(String[] args) {
try {
// The following line would throw ExceptionInInitializerError
SimpleCalculator calculator1 = new SimpleCalculator();
} catch (Throwable t) {
System.out.println(t);
}
// The following line would cause NoClassDefFoundError
SimpleCalculator calculator2 = new SimpleCalculator();
}}SimpleCalculator.java
public class SimpleCalculator {
static int undefined = 1 / 0;}添加回答
举报
0/150
提交
取消
