2010-09-27 92 views
1

項目A依賴於項目B.的Eclipse拋出的ExceptionInInitializerError上運行,對NoClassDefFoundError的調試

在編譯時間,一切都OK了。

在調試時,當調用項目B的類bClass的靜態函數時,我得到NoClassDefFoundError。

運行時,我得到ExceptionInInitializerError。

另外,bClass有一個靜態初始化器,當我在那裏放置一個斷點時,它永遠不會到達它 - 這對我來說似乎很奇怪,但也很有意義,因爲可能找不到類。

任何想法如何解決?盡我所能理解,我檢查了所有的依賴關係。

回答

1

對於NoClassDefFound異常,請根據您的編譯時類路徑仔細檢查您的運行時類路徑。 Eclipse通常使用運行時CP的編譯時類路徑,但如果修改了默認的啓動配置,它們可能不再匹配。

0

我經常發現,如果一個靜態初始化器拋出一個異常,那麼你會得到這些令人困惑和誤導性的結果。試試這個:將try/catch語句放在靜態初始化程序中的所有代碼上,並在catch塊中記錄異常(在錯誤日誌或控制檯中)。如果出現異常,這將有助於縮小範圍。

static { 
    try { 
     // ... your code here ... 
    } catch (Throwable t) { 
     t.printStackTrace(); 
    } 
} 

當你完成調試時,你應該刪除這個try/catch子句,因爲它吞下了異常。

相關問題