由于考慮到項(xiàng)目后期需要用Flink對接Hive,所以這次項(xiàng)目升級需要將Flink版本由1.10升級到1.11人乓,且保證項(xiàng)目能夠平穩(wěn)的運(yùn)行勤篮。
有人可能覺得框架版本升級很簡單,把pom文件對應(yīng)的版本改一下不就行了色罚!
是的碰缔,碰上運(yùn)氣好的時候,也許只需要改一下版本號即可戳护,碰上運(yùn)氣差的金抡,不僅要改版本號,改代碼腌且,很有可能遇到一連串的jar包沖突>怪铡!
對于jar包沖突問題切蟋,方法掌握不當(dāng),可能一兩天都解決不了榆芦,糟心的要命柄粹,方法掌握得當(dāng),完全可以達(dá)到事半功倍的效果匆绣。
廢話不多說驻右,我們開始說一下怎么快準(zhǔn)狠地解決jar包沖突問題!
要解決jar沖突我們需要使用到idea的一個插件Maven Helper(如果沒有崎淳,自行百度安裝)堪夭。這個插件的作用主要是幫助我們分析依賴之間的關(guān)系。
在對Flink進(jìn)行版本升級的時候拣凹,我遇到了如下的問題
很明顯森爽,java.lang.NoSuchMethodError異常,jar包沖突問題嚣镜,這個怎么解決爬迟?
首先,我們分析一下異常:
異常第一行:
這句話明顯的意思是菊匿,org.apache.commons.cli.Option.builder這個類我找不見付呕。可能的兩種情況是:1跌捆、這個類的jar包沒有被引進(jìn)來徽职;2、這個類的jar包被引進(jìn)來的多個版本佩厚,之間存在沖突姆钉。
知道了問題的所在,接下來,我們就需要找一下育韩,org.apache.commons.cli.Option.builde 的jar包是啥克蚂。使用快捷鍵Ctrl + Shift + N,或者點(diǎn)擊
輸入org/apache/commons/cli/Option筋讨,發(fā)現(xiàn)如下圖
顯然org.apache.commons.cli.Option.builde的jar是commons-cli-1.2.jar
接下來埃叭,使用Dependency Analyzer查看commons-cli-1.2.jar存在哪些沖突?
commons-cli-1.2.jar存在兩個版本悉罕,排除掉1.2的版本即可赤屋。至此,jar包沖突被完美解決壁袄。
最后總結(jié)类早,其實(shí)就是三步:
1.根據(jù)異常確定哪個類找不見
2.確定該類所在的jar包
3.利用Dependency Analyzer排除沖突
最后,jar包沖突搞定J嚷摺IА!