Java問題筆記:NoClassDefFoundError
問題現象
直接報NoClassDefFoundError。
解決思路
首先我們先了解一下這個異常:
NoClassDefFoundError表明當前執行的類已經編譯,但是找不到它的定義時。也就是說你如果編譯了一個類B,在類A中調用,編譯完成以後,你又刪除掉B,運行A的時候那麼就會出現這個錯誤。
拋開人爲刪除的可能性,這個一般是重複類導致的,如果你確定你的類不重複,那就是你的類依賴的類有問題,你可以在Debug時查找當前類或依賴類的是來自那個jar,看加載的是不是來自錯誤的Jar.
Thread.currentThread().getContextClassLoader().getResource("org/apache/http/impl/client/HttpClientBuilder.class")
特別需要注意的是,getResource("類的全路徑,注意class結尾")。
執行完成之後,關注file字段顯示的jar路徑是否是正確的,如果不正確,就刪掉他或者相辦法替換他!