NoClassDefFoundError:org/slf4j/impl/StaticLoggerBinder 对 Gradle 具有正确的依赖关系

问题描述 投票:0回答:2

我们正在尝试升级我们的日志记录。我们使用 gradle 文件更新这些包:

    implementation "org.slf4j:slf4j-api:1.7.6"
    implementation "ch.qos.logback:logback-classic:1.2.3"
    implementation "ch.qos.logback:logback-core:1.2.3"

    implementation "org.slf4j:slf4j-api:2.0.5"
    implementation "ch.qos.logback:logback-classic:1.4.5"
    implementation "ch.qos.logback:logback-core:1.4.5"

但是,在进行此更新时,我们收到以下错误:

java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder

我们正在使用 spring-boot,但排除了它的日志包,这些包适用于上面看到的日志包的早期版本。这是通过以下方式完成的:

configurations {
    all*.exclude module: 'spring-boot-starter-logging'
}

我们相信对所示的这些新版本使用了正确的更新依赖项。我们不确定是什么导致了这个问题,因为我们遵循了其他建议,但没有任何运气。如果有人可以提供帮助,我们将不胜感激。

谢谢你

spring gradle logback slf4j noclassdeffounderror
2个回答
2
投票

StaticLoggerBinder 不存在于版本中

org.slf4j-2.0.5.
据我所知,您可以在这里找到 StaticLoggerBinder 的依赖关系

group: 'org.apache.logging.log4j', name: 'log4j-slf4j-impl', version: '2.19.0'

https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-slf4j-impl

我还检查过,即使在最新版本中也存在 StaticLoggerBinder,即

2.19.0

另外,我检查了你的旧版本

slf4j-api 1.7.6.
https://mvnrepository.com/artifact/org.slf4j/slf4j-api/1.7.6

该依赖项也没有 StaticLoggerBinder,但它存在于我上面提供的

log4j-slf4j-impl
的依赖项中。


0
投票

其实原因是logback-classic从v1.3.0中删除了org/slf4j/impl/StaticLoggerBinder,而spring-boot 2.x只支持logback到v1.2.x(目前是1.2.12)。

相关问题如下: https://github.com/spring-projects/spring-boot/issues/34708 https://github.com/spring-projects/spring-boot/issues/12649

© www.soinside.com 2019 - 2024. All rights reserved.