2014-08-28 135 views
1

因此,我发现这是新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 
+0

你能展示整个堆栈跟踪和代码吗? – Jens 2014-08-28 13:50:00

+0

如果碰到NoClassDefFound第一件事,你应该检查你的类路径中是否有这样的类? – talex 2014-08-28 13:52:30

+0

@Jens:很好,你问了。我会在一会儿编辑原文。 – Sturm 2014-08-28 13:53:54

回答

3

在Eclipse IDE中,有时某些类会奇迹般地消失。你可以尝试项目 - >清理重建所有。

+0

+1,有时候ol'clean&build是最好的选择:) – epoch 2014-08-29 06:22:24

+0

和IntelliJ IDEA一样。清理和重建项目为我解决了同样的问题。 – weibeld 2017-03-21 05:22:42