内部类的NoClassDefFoundError

Stu*_*urm 1 java swing noclassdeffounderror

因此,我发现这对于新Java程序员来说是一个非常普遍的问题。然而,经过Java八个月的编程之后,今天是我第一次接触它。

该程序已经运行了相当长的一段时间了。昨晚我对Swing布局进行了一些细微调整,终于在今天早晨遇到错误时有机会对它进行尝试。我所做的调整可能无法完成,但我可以肯定它与该错误无关。

该错误告诉我它发生在该行:

private CheckTreeTableSelectionListener selectionListener = new CheckTreeTableSelectionListener();
Run Code Online (Sandbox Code Playgroud)

它位于类顶部的字段列表中。这是有趣的一点:CheckTreeTableSelectionListener一个内部类。它不是外部的也不是导入的。另外,我昨晚没有碰到内部类,也没有碰到创建它的新实例的领域。现在,我(几乎)了解到NoClassDefFoundError消息意味着可以在编译时找到类定义,而在运行时找不到。这真的没有帮助。如果是内部类,怎么找不到?就在实例化它的类中!

编辑

根据要求,这里是堆栈跟踪:

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: info/chrismcgee/sky/Scheduling$CheckTreeTableSelectionListener
at info.chrismcgee.sky.Scheduling.<init>(Scheduling.java:165)
at info.chrismcgee.sky.Scheduling$2.run(Scheduling.java:204)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:744)
at java.awt.EventQueue.access$400(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.awt.EventQueue$3.run(EventQueue.java:691)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:714)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.lang.ClassNotFoundException: info.chrismcgee.sky.Scheduling$CheckTreeTableSelectionListener
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 16 more
Run Code Online (Sandbox Code Playgroud)

tal*_*lex 6

在Eclipse IDE中,某些类会神奇地消失。您可以尝试Project-> Clean重新构建所有内容。