快准狠!解决jar包冲突问题

由于考虑到项目后期需要用Flink对接Hive,所以这次项目升级需要将Flink版本由1.10升级到1.11,且保证项目能够平稳的运行。

有人可能觉得框架版本升级很简单,把pom文件对应的版本改一下不就行了!

是的,碰上运气好的时候,也许只需要改一下版本号即可,碰上运气差的,不仅要改版本号,改代码,很有可能遇到一连串的jar包冲突!!

对于jar包冲突问题,方法掌握不当,可能一两天都解决不了,糟心的要命,方法掌握得当,完全可以达到事半功倍的效果。

废话不多说,我们开始说一下怎么快准狠地解决jar包冲突问题!

要解决jar冲突我们需要使用到idea的一个插件Maven Helper(如果没有,自行百度安装)。这个插件的作用主要是帮助我们分析依赖之间的关系。

Dependency Analyzer

在对Flink进行版本升级的时候,我遇到了如下的问题

异常

很明显,java.lang.NoSuchMethodError异常,jar包冲突问题,这个怎么解决?

首先,我们分析一下异常:

异常第一行:

异常

这句话明显的意思是,org.apache.commons.cli.Option.builder这个类我找不见。可能的两种情况是:1、这个类的jar包没有被引进来;2、这个类的jar包被引进来的多个版本,之间存在冲突。

知道了问题的所在,接下来,我们就需要找一下,org.apache.commons.cli.Option.builde 的jar包是啥。使用快捷键Ctrl + Shift + N,或者点击

File...

输入org/apache/commons/cli/Option,发现如下图

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包冲突被完美解决。

最后总结,其实就是三步:

1.根据异常确定哪个类找不见

2.确定该类所在的jar包

3.利用Dependency Analyzer排除冲突

最后,jar包冲突搞定!!!

你可能感兴趣的:(快准狠!解决jar包冲突问题)