DynamicJasper依赖致commons-logging冲突,SpringBoot初始化报错未解决求助
我之前也踩过这个坑,这个提示的本质不是你的项目缺失log4j依赖,而是commons-logging-1.0.3.jar自身的MANIFEST.MF文件里硬编码了不存在的log4j相关路径,而且你当前排除DynamicJasper的commons-logging引用没用,大概率是项目里还有其他依赖间接引入了这个老版本的commons-logging。
下面是具体的解决步骤:
第一步:定位老版本commons-logging的来源
执行Maven命令查看所有引入commons-logging的依赖路径,找到带1.0.3版本的那个依赖:mvn dependency:tree -Dincludes=commons-logging这个命令会输出类似这样的结构,帮你找到到底是哪个依赖偷偷引入了1.0.3版本:
[INFO] +- XXXXX:XXXX:jar:1.0:compile [INFO] | \- commons-logging:commons-logging:jar:1.0.3:compile第二步:替换为无问题的commons-logging版本
最直接的方式是通过dependencyManagement强制指定项目使用稳定的1.2版本(这个版本的MANIFEST清单里没有那些无效的Class-Path引用),在你的pom.xml里添加:<dependencyManagement> <dependencies> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.2</version> </dependency> </dependencies> </dependencyManagement>这样整个项目里所有依赖引入的commons-logging都会统一用1.2版本,替换掉有问题的1.0.3。
第三步:清理本地Maven缓存(可选但推荐)
找到本地Maven仓库里的commons-logging/commons-logging/1.0.3目录,删除它,然后执行:mvn clean install避免本地缓存的老jar包影响新依赖的加载。
另外补充一句:你之前排除DynamicJasper的commons-logging是对的,但如果还有其他依赖引入老版本,就会出现这个问题,所以核心是把整个项目的commons-logging版本统一到无问题的1.2。
内容的提问来源于stack exchange,提问作者k4k4sh1

