java noSuchMethodError 產(chǎn)生原因以及解決方案

file

java noSuchMethodError 產(chǎn)生原因以及解決方案

表象原因

A.class 調(diào)用的 B.methodX 剧包。

運(yùn)行時候的 加載到B 的 class 中methodX 可能存在的情況

  • methodX 方法的確不存在

  • methodX 方法簽名和 A.class調(diào)用的 B.methodX簽名不一致

根本原因

編譯時 B 的版本和 運(yùn)行時 B 的版本不一致

運(yùn)行時 B 的 jar 包在 classPath 中有多個,jvm 加載到錯誤的 jar 包

不同 classLoader 加載到B 不同版本的類。

子 classLoader 在委托父類的時候加載的時候,獲取到了到父 classLoder 加載的B.class

分類

jvm 中的類

  • 原因
  • 通常是寫代碼的時候,以及編譯的時候用的 jdk 版本比較高,但是運(yùn)行時候用的 jdk 版本較低
  • 解決方案
  • 確認(rèn)運(yùn)行環(huán)境 jdk 版本是否正確

公司項目 jar 包中的類

  • 原因
  • 引入低版本的 jar 包

  • 引入的 snapshot 版本的包不是最新的

  • 解決方案
  • 修改依賴版本的 jar 包 為正確版本

  • snapshot 版本包不對

  • 執(zhí)行 mvn 命令時加-U 參數(shù)拦惋。mvn clean package/install -U
  • 不建議

  • 其他環(huán)境編譯的時候,也同樣要加參數(shù)

  • maven 配置

<profile>

<id>nexus</id>

<repositories>

<repository>

<id>central</id>

<url>http://central</url>

<releases>

<enabled>true</enabled>

</releases>

<snapshots>

<enabled>true</enabled>

<updatePolicy>always</updatePolicy>

</snapshots>

</repository>

</repositories>

</profile>

  • 不建議使用

  • 其他人也要修改

  • 項目中 pom.xml中配置
  • 建議使用

項目中依賴第三方 jar 包中的類

  • 原因
  • 引入低版本的 jar 包

  • 引入多個 jar 包安寺,但是加載到了錯誤版本的 jar 包

  • 子類 classLoader 加載類時候厕妖,委托父類 classLoader 加載到低版本的 classLoader

  • 定位方式
  • 1.先通過-verbose:class 查找加載到哪個類

  • 2.通過 jvm 類加載器結(jié)構(gòu)判斷,是那個類加載器加載到這個類 然后想辦法解決

  • 解決方案
  • 修改為正確版本的 jar 包

  • 通過 maven 命令選擇正確的 jar 包

  • 第一步:列出依賴的 jar 包
  • mvn dependency:list命令可以列出當(dāng)前所有依賴(包括直接和傳遞)的列表挑庶,以及范圍叹放。

  • mvn dependency:tree命令可以層次化的列出所有依賴,可以從書中看出依賴傳遞的關(guān)系挠羔。

  • 第二步:利用 exclude 排除不需要的依賴
  • 利用 jvm 命令 查看加載了哪個 jar 包 導(dǎo)致的錯誤
  • -verbose:class
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市埋嵌,隨后出現(xiàn)的幾起案子破加,更是在濱河造成了極大的恐慌,老刑警劉巖雹嗦,帶你破解...
    沈念sama閱讀 221,331評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件范舀,死亡現(xiàn)場離奇詭異,居然都是意外死亡了罪,警方通過查閱死者的電腦和手機(jī)锭环,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,372評論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來泊藕,“玉大人辅辩,你說我怎么就攤上這事⊥拊玻” “怎么了玫锋?”我有些...
    開封第一講書人閱讀 167,755評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長讼呢。 經(jīng)常有香客問我撩鹿,道長,這世上最難降的妖魔是什么悦屏? 我笑而不...
    開封第一講書人閱讀 59,528評論 1 296
  • 正文 為了忘掉前任节沦,我火速辦了婚禮键思,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘甫贯。我一直安慰自己吼鳞,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,526評論 6 397
  • 文/花漫 我一把揭開白布获搏。 她就那樣靜靜地躺著赖条,像睡著了一般。 火紅的嫁衣襯著肌膚如雪常熙。 梳的紋絲不亂的頭發(fā)上纬乍,一...
    開封第一講書人閱讀 52,166評論 1 308
  • 那天,我揣著相機(jī)與錄音裸卫,去河邊找鬼仿贬。 笑死,一個胖子當(dāng)著我的面吹牛墓贿,可吹牛的內(nèi)容都是我干的茧泪。 我是一名探鬼主播,決...
    沈念sama閱讀 40,768評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼聋袋,長吁一口氣:“原來是場噩夢啊……” “哼队伟!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起幽勒,我...
    開封第一講書人閱讀 39,664評論 0 276
  • 序言:老撾萬榮一對情侶失蹤嗜侮,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后啥容,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锈颗,經(jīng)...
    沈念sama閱讀 46,205評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,290評論 3 340
  • 正文 我和宋清朗相戀三年咪惠,在試婚紗的時候發(fā)現(xiàn)自己被綠了击吱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,435評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡遥昧,死狀恐怖覆醇,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情炭臭,我是刑警寧澤叫乌,帶...
    沈念sama閱讀 36,126評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站徽缚,受9級特大地震影響憨奸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜凿试,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,804評論 3 333
  • 文/蒙蒙 一排宰、第九天 我趴在偏房一處隱蔽的房頂上張望似芝。 院中可真熱鬧,春花似錦板甘、人聲如沸党瓮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,276評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽寞奸。三九已至,卻和暖如春在跳,著一層夾襖步出監(jiān)牢的瞬間枪萄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工猫妙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瓷翻,地道東北人。 一個月前我還...
    沈念sama閱讀 48,818評論 3 376
  • 正文 我出身青樓割坠,卻偏偏與公主長得像齐帚,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子彼哼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,442評論 2 359

推薦閱讀更多精彩內(nèi)容