java.lang.NoSuchMethodError的解決辦法


開發一個知識圖譜在線服務(基於springcloud+vue)構建中醫理論的知識圖譜構建帕金森的知識圖譜提供免費的知識圖譜服務,希望能為朋友們的生活、學習、工作提供幫助(敬請期待)PS:關注后,點擊頭像,點擊源碼下載也可以到我的博客(i.drai.top)下載

問題

NoSuchMethodError是一個運行時錯誤,在編譯時一般不會出現這個錯誤。

既然能成功編譯,就說明方法本身是存在的,方法所在的類也是存在的,而且都可以正常的引用到。

那么為什么還會出現這個錯誤?

原因

方法本身是存在的,方法所在類也是存在的,那么在運行時還會出現這個錯誤,就只能說明運行時引用的類里面沒有這個方法。

這說起來有點拗口,簡單的說,就是存在至少兩個類名一樣的類A和B,其中A有一個need方法,B則沒有這個方法。編譯時,編譯器發現依賴路徑下有需要的類A或者B,則編譯通過。

但是執行時,在要調用A.need()方法時,因為A和B同名,錯誤的調用了B.need()方法,這個方法本身是不存在的,自然就出現了NoSuchMethodError這個錯誤

解決辦法

通過分析可以發現,其實問題產生的根本原因是類有沖突,也就是存在多個滿足條件的類A,B,C..

這種情況一般出現在引用某個庫或者jar時,同時引用了多個版本而導致的。

解決辦法也簡單,找出拋出NoSuchMethodError這個異常的類,然后找出包含這個類的所有Jar,然后保留正確的辦法,把其他的jar刪掉,就可以了。

如果不知道哪個是正確的jar,請使用程序員都會的:

排除大法


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM