一个简单粗暴的定位冲突jar的方法

这是一个简单粗暴的定位冲突jar的方法

项目中加了三个jar依赖之后 启动时就报错,去掉之后 运行正常

<dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>${hadoop.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hive</groupId>
            <artifactId>hive-jdbc</artifactId>
            <version>${hive.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hive</groupId>
            <artifactId>hive-common</artifactId>
            <version>${hive.version}</version>
        </dependency>

判断是这个三个jar与 原有jar冲突

经过几轮尝试之后缩小范围 是 hive-jdbc  与hive-common 中的包存在冲突 与hadoop-common无关

尝试定位具体的冲突jar

1、根据具体错误百度 得到的很多都是配置文件写错 很显然不符合

2、因为项目依赖的包比较多 ,在加入上面三个包前就有30个jar冲突了 ,不过并没有影响项目正常运行,加入上面3个jar之后 多了10个冲突 ,首先把这多出来10个做exclusions排除 项目依然启不起来,把40个冲突的jar全部做排除 项目依然启不起来

以上尝试都没能定位到具体是哪个包冲突导致启动异常

突然想到一个办法:根据pom.xml全部排出,如果不报错 再定位具体的jar

点击

跳转进去查看所有依赖

把pom.xml中所有的依赖拷贝出来改成排除 贴到我项目中引用 hive-jdbc 的包中

同理hive-common 也根据pom.xml文件中依赖的包全都去掉

运行一下试试 果然正常了

然后就是在这些exclusion 中定位具体是哪一个了 范围已经确定剩下的就是使用二分法 一半一半的排除了 

最终找到是这个包导致的冲突

 <groupId>org.eclipse.jetty.aggregate</groupId>
   <artifactId>jetty-all</artifactId>

改下依赖就OK了

  <dependency>
            <groupId>org.apache.hive</groupId>
            <artifactId>hive-jdbc</artifactId>
            <version>${hive.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.eclipse.jetty.aggregate</groupId>
                    <artifactId>jetty-all</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.hive</groupId>
            <artifactId>hive-common</artifactId>
            <version>${hive.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.eclipse.jetty.aggregate</groupId>
                    <artifactId>jetty-all</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

 

不过我用这个命令 mvn -X compile dependency:tree -Dverbose >a.log打印所有冲突的jar并没有jetty-all 这个包冲突,所以我上面尝试定位的第二种方法 才没有找到真正的冲突jar

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值