快準(zhǔn)狠!解決jar包沖突問題

由于考慮到項目后期需要用Flink對接Hive,所以這次項目升級需要將Flink版本由1.10升級到1.11,且保證項目能夠平穩(wěn)的運(yùn)行。

有人可能覺得框架版本升級很簡單,把pom文件對應(yīng)的版本改一下不就行了!

是的,碰上運(yùn)氣好的時候,也許只需要改一下版本號即可,碰上運(yùn)氣差的,不僅要改版本號,改代碼,很有可能遇到一連串的jar包沖突?。?/p>

對于jar包沖突問題,方法掌握不當(dāng),可能一兩天都解決不了,糟心的要命,方法掌握得當(dāng),完全可以達(dá)到事半功倍的效果。

廢話不多說,我們開始說一下怎么快準(zhǔn)狠地解決jar包沖突問題!

要解決jar沖突我們需要使用到idea的一個插件Maven Helper(如果沒有,自行百度安裝)。這個插件的作用主要是幫助我們分析依賴之間的關(guān)系。

Dependency Analyzer

在對Flink進(jìn)行版本升級的時候,我遇到了如下的問題

異常

很明顯,java.lang.NoSuchMethodError異常,jar包沖突問題,這個怎么解決?

首先,我們分析一下異常:

異常第一行:

異常

這句話明顯的意思是,org.apache.commons.cli.Option.builder這個類我找不見??赡艿膬煞N情況是:1、這個類的jar包沒有被引進(jìn)來;2、這個類的jar包被引進(jìn)來的多個版本,之間存在沖突。

知道了問題的所在,接下來,我們就需要找一下,org.apache.commons.cli.Option.builde 的jar包是啥。使用快捷鍵Ctrl + Shift + N,或者點擊

File...

輸入org/apache/commons/cli/Option,發(fā)現(xiàn)如下圖

jar

顯然org.apache.commons.cli.Option.builde的jar是commons-cli-1.2.jar

接下來,使用Dependency Analyzer查看commons-cli-1.2.jar存在哪些沖突?

conflicts

commons-cli-1.2.jar存在兩個版本,排除掉1.2的版本即可。至此,jar包沖突被完美解決。

最后總結(jié),其實就是三步:

1.根據(jù)異常確定哪個類找不見

2.確定該類所在的jar包

3.利用Dependency Analyzer排除沖突

最后,jar包沖突搞定?。?!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容