type
status
date
slug
summary
tags
category
icon
password
思路参考这个回答
在解决依赖冲突的场景中,偶尔会遇到这个问题:
显然,这是log4j的依赖冲突,但是通过idea的Mavendependency Analyzer并没有找到冲突的依赖,想办法排依赖可能就解决了。然而这种解决方式并不靠谱。这里把问题出现的原因和解决流程记录一下。
排查流程
这个问题是ILoggerFactory这个类被加载了两次
- 在jvm参数里添加 -verbose:class, 打印类的加载路径找到冲突的jar包
可以看到这个类在slf4j-api-1.7.30.jar和hive-exec-2.3.8.jar上都出现了,可以断定hive-exec-2.3.8.jar里包含了其他版本的slf4j依赖。
- 通过反编译查看依赖版本通过jd-gui查看hive-exec-2.3.8.jar里包含的slf4j依赖版本发现两个版本确实是不一致的,想办法解决这个问题。
解决
- 通过maven的依赖覆盖解决这个问题
- 通过maven shade插件改名解决这个问题