gpt4 book ai didi

java - 非常奇怪的NoClassDefFoundError

转载 作者:行者123 更新时间:2023-12-01 21:33:54 26 4
gpt4 key购买 nike

我遇到过出现 NoClassDefFoundError 的情况。由于没有太多可用信息,而且我 100% 肯定该类存在,因此我使用 Eclipse 调试器进行了一些详细测试:

  1. 以 Debug模式启动 Java 程序
  2. 当它停止(某处)时,我检查正在运行的线程的类路径(在 Debug模式下)。 “丢失”的类的目录在那里,.class 文件也在那里。
  3. 在“表达式”窗口中,我添加两个表达式:

    a) new MyClass() --> 导致 NoClassDefFoundError

    b) MyClass.class -> 显示类定义!?!?

  4. 我在 MyClass 构造函数的第一行放置了一个断点,它永远不会在那里停止,因此构造函数永远不会被调用...在类上调用 private static final 字段可以从调试窗口进行...<

怎么会这样呢?我还使用 VisualVM 监视了该过程,并且可以看到“MyClass”定义。当类存在时,什么会导致这样的错误?

我无法获得此案例的一个可复制的小示例,因为我不知道是什么原因导致的。类的单元测试可以实例化它,这种行为仅发生在集成上下文中。

最佳答案

我相信 NoClassDefFoundError 可能是由于链接问题造成的。当你这样做时:

MyClass.class

您正在加载该类,但没有初始化它;这意味着初始化中使用的引用不需要解析。另一方面,当您创建实例时:

new MyClass()

...该类确实需要初始化,需要解析引用,此时您可能会失败 - 事实上您确实这样做了。对我来说,这意味着该类引用了另一个由于某种原因而无法加载的类,或者该类的初始化失败(尽管后者通常会给出 ExceptionInInitializerError )。

关于java - 非常奇怪的NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37165987/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com