因此,我發現這是新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