因此,我发现这是新Java程序员的一个非常普遍的问题。然而,今天是我经过八个月的Java编程后第一次遇到它。它使所有这些工作完全停滞不前,直到我能解决它。在继续深入之前,请明白我不能将完整的代码发布到我的程序中,仅仅因为它对于计算器而言太大了。主要部分超过1600行,不包括它导入的其他二十几个文件。但是,我不认为有必要将代码发布到这里,正如我将解释的那样。内部类的NoClassDefFoundError
这个程序已经运行良好很长一段时间了。我昨天晚上对Swing布局做了一些小调整,最终有机会在今天早上尝试了一下,当时我发现了这个错误。我做的调整可能是未做出的,但我相当确定它与这个错误无关。
错误告诉我,这发生在行:
private CheckTreeTableSelectionListener selectionListener = new CheckTreeTableSelectionListener();
这在类的顶部位于字段列表。这里有趣的是:CheckTreeTableSelectionListener
是内部类。这是不是外部也没有被导入。此外,我没有触及昨晚的内部类,也没有触及创建它的新实例的字段。现在我明白(很少)NoClassDefFoundError消息意味着类定义可以在编译时找到,但不能在运行时找到。这并没有真正的帮助。如果它是一个内部类,它怎么能找不到?它就在那里,在实例化它的类中!
这个程序定于明天上线,现在我无法部署它,因此。我能做些什么来及时解决问题吗?
9:59 am编辑:根据要求,这里是堆栈跟踪。我无法发布代码,因为它对于stackoverflow来说太大了。我只是试过,它不会让我。所以这里是堆栈跟踪,至少:
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
你能展示整个堆栈跟踪和代码吗? – Jens 2014-08-28 13:50:00
如果碰到NoClassDefFound第一件事,你应该检查你的类路径中是否有这样的类? – talex 2014-08-28 13:52:30
@Jens:很好,你问了。我会在一会儿编辑原文。 – Sturm 2014-08-28 13:53:54