出現(xiàn)java.lang.NoSuchMethodException異常的解決(靠譜)
java.lang.NoSuchMethodException異常解決
首先,這個(gè)錯(cuò)誤必然是運(yùn)行期間的,網(wǎng)上說(shuō)了一堆,檢查類(lèi)有沒(méi)有這個(gè)方法,我覺(jué)得都是廢話,沒(méi)有這個(gè)方法,能通過(guò)編譯?
下面我分享一個(gè)我項(xiàng)目運(yùn)行報(bào)錯(cuò)java.lang.NoSuchMethodException情景
- 第一,我保證自己項(xiàng)目絕對(duì)有這個(gè)類(lèi)和這個(gè)方法。且有一個(gè)?
- 第二,其他什么形參也都正確,從服務(wù)器拿包下來(lái),反編譯class文件也都沒(méi)問(wèn)題。阿,這。。。。。
反復(fù)打包反復(fù)發(fā)布到生產(chǎn)都不行,但是奇葩的是,測(cè)試環(huán)境并沒(méi)有報(bào)錯(cuò)。
于是玄學(xué)了一天,本來(lái)完全肯定是有同包同名的另一個(gè)class類(lèi)存在,而這個(gè)類(lèi)沒(méi)有我要得方法。折騰了大半天,失去了信心。
有一個(gè)前提
我們本地jar包啟動(dòng)springboot都沒(méi)有這個(gè)錯(cuò)誤。都是打包到外部容器,war包運(yùn)行就會(huì)出現(xiàn)這個(gè)錯(cuò)誤。
終于
idea全局搜索了意外看到了All Places,發(fā)現(xiàn)maven引的一個(gè)jar包也存在同包同名的另一個(gè)class,坑人啊。
沒(méi)有選All Places,只能找到項(xiàng)目工程下的,并不能找到j(luò)ar包里面的內(nèi)容。

找到這個(gè)同包同名的class文件之后,刪除也好,maven排除依賴也好,都可以,按實(shí)際情況來(lái)定。
總結(jié)
存在同包同名的class文件,方法不一致,由于jvm的類(lèi)加載機(jī)制,可能會(huì)加載另一個(gè)不是我們想要的class。
所以在運(yùn)行的時(shí)候報(bào)錯(cuò)java.lang.NoSuchMethodException.
最后:
請(qǐng)仔細(xì)檢查類(lèi)沖突?。?!
請(qǐng)仔細(xì)檢查類(lèi)沖突?。?!
請(qǐng)仔細(xì)檢查類(lèi)沖突?。?!
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MyBatis-Plus3.x版本使用入門(mén)和踩過(guò)的坑
Mybatis-Plus是Mybatis的增強(qiáng)版,他只是在Mybatis的基礎(chǔ)上增加了功能,且并未對(duì)原有功能進(jìn)行任何的改動(dòng),本文給大家說(shuō)一下MyBatis-Plus3.x版本使用入門(mén)和踩過(guò)的坑,感興趣的朋友跟隨小編一起看看吧2023-10-10
SPRING FRAMEWORK BEAN作用域和生命周期原理解析
這篇文章主要介紹了SPRING FRAMEWORK BEAN作用域和生命周期原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01
教你使用IDEA搭建spring源碼閱讀環(huán)境的詳細(xì)步驟
這篇文章主要介紹了使用IDEA搭建spring源碼閱讀環(huán)境的詳細(xì)步驟,本文分兩步通過(guò)實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2021-08-08

