當應用程序試圖通過類的字符串名稱,使用常規的三種方法裝入類,但卻找不到指定名稱的類定義時就拋出該異常。
NoClassDefFoundError: 當目前執行的類已經編譯,但是找不到它的定義時
也就是說你如果編譯了一個類B,在類A中調用,編譯完成以後,你又刪除掉B,運行A的時候那麼就會出現這個錯誤
加載時從外存儲器找不到需要的class就出現ClassNotFoundException
連接時從內存找不到需要的class就出現NoClassDefFoundError
看一下JDK API裏面的解釋
當 Java 虛擬機或 ClassLoader 實例試圖在類的定義中加載(作爲通常方法調用的一部分或者作爲使用 new 表達式創建的新實例的一部分),但無法找到該類的定義時,拋出此異常。
當前執行的類被編譯時,所搜索的類定義存在,但無法再找到該定義。
2.ClassNotFoundException
當應用程序試圖使用以下方法通過字符串名加載類時,拋出該異常:
* Class 類中的 forName 方法。
* ClassLoader 類中的 findSystemClass 方法。
* ClassLoader 類中的 loadClass 方法。