本文正在参加「Java主题月 - Java Debug笔记活动」,详情查看活动链接
为什么在Java中收到NoClassDefFoundError?
我得到一个NoClassDefFoundError运行我的Java应用程序。通常是什么原因造成的?
高分回答:
这是由于存在代码所依赖的类文件,并且该类文件在编译时存在但在运行时未找到。在构建时间和运行时类路径中寻找差异。
高分回答:
尽管这可能是由于编译时和运行时之间的类路径不匹配导致的,但不一定是正确的。
在这种情况下,请务必将两个或三个不同的异常摆在脑海中:
java.lang.ClassNotFoundException此异常表明在类路径上找不到该类。这表明我们正在尝试加载类定义,并且该类在类路径中不存在。
java.lang.NoClassDefFoundError此异常表明JVM在其内部类定义数据结构中查找了类的定义,但未找到。这与说无法从类路径中加载不同。通常,这表明我们以前曾尝试从类路径中加载类,但由于某种原因而失败-现在我们正尝试再次使用该类(因此,由于上次失败,因此需要对其进行加载),但是我们甚至不打算尝试加载它,因为我们之前加载失败(有理由怀疑我们会再次失败)。较早的故障可能是ClassNotFoundException或ExceptionInInitializerError(指示静态初始化块中的故障)或许多其他问题。关键是,NoClassDefFoundError不一定是类路径问题。
高分回答:
这是说明的代码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;
}
文章翻译自kgs4h5t57thfb6iyuz6dqtun5y-ac4c6men2g7xr2a-stackoverflow-com.translate.goog/questions/3…
作者建议:路径不正确,或者需要添加相关的依赖包
真心感谢帅逼靓女们能看到这里,如果这个文章写得还不错,觉得有点东西的话
求点赞👍 求关注❤️ 求分享👥 对8块腹肌的我来说真的 非常有用!!!
如果本篇博客有任何错误,请批评指教,不胜感激 !❤️❤️❤️❤️