由于考慮到項目后期需要用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)系。

在對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,或者點擊

輸入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é),其實就是三步:
1.根據(jù)異常確定哪個類找不見
2.確定該類所在的jar包
3.利用Dependency Analyzer排除沖突
最后,jar包沖突搞定?。?!