2014-08-28 37 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