我遇到NoClassDefFoundError的情况。由于没有太多可用的信息,并且我100%肯定该类在那里,我使用Eclipse调试器进行了一些详细的测试:
在“表达式”窗口中,我添加了两个表达式:
a)新的MyClass() - >导致NoClassDefFoundError
b)MyClass.class - >显示类定义!?!?
怎么会这样?我还使用VisualVM查看了该过程,我可以看到“MyClass”定义。当班级在那里时会出现什么错误?
我无法得到这个案例的一个小的可复制的例子,因为我不知道是什么原因造成的。类的单元测试可以实例化它,这种行为只发生在集成的上下文中。
答案 0 :(得分:2)
我相信NoClassDefFoundError
可能是由于链接问题造成的。当你这样做时:
MyClass.class
您正在加载类但未初始化它;这意味着不需要解析初始化中使用的引用。另一方面,当您创建实例时:
new MyClass()
...该类确实需要初始化,需要解析引用,并且您可以在那时获得失败 - 实际上您确实如此。对我来说,这意味着该类引用了另一个由于某种原因无法加载的类,或者该类的初始化失败(尽管后者通常会给出ExceptionInInitializerError
)。
答案 1 :(得分:1)
如果在初始化class
时出现故障,可能会发生这种情况,通常是exception
中有static blocks
,因此您应该检查所有static blocks
以确保RuntimeException
没有人抛出<div contenteditable="plaintext-only" id="mainDiv" onblur="func()">
</div>
。