我爱布朗熊 2024-06-20 17:27 采纳率: 75%
浏览 23

SLF4J: Class path contains multiple SLF4J bindings.

公司对接第三方,只能引入第三方的jar包,但是产生了依赖冲突
在IDEA右侧的maven中也无法查看此三方的jar包引入了哪些maven依赖,所以我一直找不到是哪个包的问题

报错信息如下所示:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/E:/Inspur/InspurCode/ihs-platform/ihs-platform/ihs-platform-tools/libs/masmgc.sdk.sms-1.0.3-SNAPSHOT.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/E:/Soft/Maven/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.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.NoSuchMethodError: org.springframework.util.Assert.isInstanceOf(Ljava/lang/Class;Ljava/lang/Object;Ljava/util/function/Supplier;)V

img

也像下面一样排除了一些依赖,但是还不行

<dependency>
            <groupId>masmgc-sdk-sms</groupId>
            <artifactId>masmgc.sdk.sms</artifactId>
            <version>1.0.3</version>
            <scope>system</scope>
            <systemPath>${basedir}/libs/masmgc.sdk.sms-1.0.3-SNAPSHOT.jar</systemPath>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-api</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-jdk14</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>ch.qos.logback</groupId>
                    <artifactId>logback-core</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>ch.qos.logback</groupId>
                    <artifactId>logback-classic</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>ch.qos.logback</groupId>
                    <artifactId>logback-parent</artifactId>
                </exclusion>
            </exclusions>
        </dependency>


  • 写回答

1条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-20 17:27
    关注

    引自免费微信小程序:皆我百晓生

    这个问题主要是由于在项目中存在多个版本的 SLF4J(简单日志门面框架)绑定,这导致了依赖冲突。SLF4J 是一个用于日志的框架,它本身并不实现日志功能,而是依赖于其他日志框架(如 Logback 或 Log4j)来实现具体的日志功能。因此,当你在项目中引入多个 SLF4J 绑定时,可能会导致运行时错误。

    从你给出的信息来看,有两个 jar 包包含了 SLF4J 绑定:masmgc.sdk.sms-1.0.3-SNAPSHOT.jarlogback-classic-1.2.3.jar。这导致了冲突。解决这个问题的关键在于确定哪个版本的 SLF4J 绑定是必需的,并排除其他版本的绑定。

    根据你提供的 Maven 配置,你已经尝试通过 <exclusions> 标签排除了一些依赖,但仍然遇到了问题。你可以尝试以下步骤来解决这个问题:

    1. 检查 pom.xml 文件中的依赖项,确保只引入了必需的 SLF4J 相关依赖。如果可能的话,尝试只引入一个版本的 SLF4J 绑定。
    2. 如果你无法控制第三方库的引入,你可以尝试在你的项目中显式地引入一个版本的 SLF4J 绑定(例如 Logback),并通过 <exclusions> 标签排除其他版本的绑定。这样可以确保你的项目使用你指定的版本的 SLF4J 绑定。

    例如,你可以在你的 pom.xml 文件中添加以下依赖项:

    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>你的指定版本</version>
        <exclusions>
            <!-- 排除其他版本的 SLF4J 绑定 -->
            <!-- 例如排除 logback-core 和其他相关依赖 -->
        </exclusions>
    </dependency>
    

    注意替换 你的指定版本 为你想要使用的 Logback 版本。同时,根据实际需求排除其他版本的 SLF4J 绑定相关依赖。这样应该可以解决依赖冲突问题。另外,确保你使用的 SLF4J 版本与你的项目兼容。

    如果问题仍然存在,你可能需要进一步检查项目中的其他依赖项,确保没有其他依赖项引入了冲突的 SLF4J 绑定。你还可以尝试使用 Maven 的依赖树功能(运行 mvn dependency:tree 命令)来查看项目的完整依赖关系,并定位冲突来源。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月20日

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀