SpringBoot 项目中,第三方 jar 日志依赖冲突

2020-12-03 17:20:16 +08:00
 xiaojianbang

今天对接了移动短信 sdk,使用他们的 sdk 启动项目报错日志 SLF4J: Class path contains multiple SLF4J bindings.

报错信息

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/Users/lf/work/company/code/dbs/src/main/resources/lib/masmgc.sdk.sms-0.0.1-SNAPSHOT.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/Users/lf/javaweb/repository/org/apache/logging/log4j/log4j-slf4j-impl/2.11.2/log4j-slf4j-impl-2.11.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder]
Exception in thread "main" java.lang.IllegalArgumentException: Cannot instantiate interface org.springframework.boot.SpringApplicationRunListener : org.springframework.boot.context.event.EventPublishingRunListener

pom 文件

        <dependency>
            <groupId>com.yidong</groupId>
            <artifactId>yd-sms-sdk</artifactId>
            <version>0.0.1</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/src/main/resources/lib/masmgc.sdk.sms-0.0.1-SNAPSHOT.jar</systemPath>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

springboot 小项目日志使用的 log4j,引入的第三方 jar 无法排除,请教大佬们如何才能解决这个冲突。

2328 次点击
所在节点    Java
7 条回复
lyusantu
2020-12-03 17:32:18 +08:00
可以装个 maven 插件,排除一下是否有其他包也包含了第三方日志的其他版本,然后只保留一个就可以
anansi
2020-12-03 17:33:13 +08:00
这个不是老生常谈吗,通过 maven 的 show dependency,查看是哪些包引入了冲突的模块,然后在那些包 dependency 里一个个<exclusion>那个模块,最后只保留一个。大致就是这么改。
liamyoung
2020-12-03 17:46:15 +08:00
Idea 安装 maven helper 插件,去除相同的 slf4j 依赖,只保留一个
1cming
2020-12-03 20:00:58 +08:00
mvn dependency:tree 打印依赖树
查看所有 SLF4J 相关的包
逐一排除
确认是否排除掉可以再次执行 mvn dependency:tree
silentt
2020-12-03 20:16:45 +08:00
移动短信 sdk 啊,我建议你用解压工具打开,直接把里面的 log4j 删了,那一个包里面啥都有,连 spring 都在 jar 里
EastLord
2020-12-03 20:47:18 +08:00
跟我今天遇到的差不多 也是日志依赖冲突
EastLord
2020-12-03 20:47:48 +08:00
我是把多余的依赖排除掉就好了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/731835

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX