首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SLF4J: slf4j-api 1.6.x (或更高版本)与此绑定不兼容

SLF4J: slf4j-api 1.6.x (或更高版本)与此绑定不兼容
EN

Stack Overflow用户
提问于 2015-09-28 23:06:39
回答 2查看 16.8K关注 0票数 14
代码语言:javascript
复制
2015-09-28 10:02:21,890 ERROR [STDERR] (HDScanner) SLF4J: slf4j-api 1.6.x (or later) is incompatible with this binding.
2015-09-28 10:02:21,891 ERROR [STDERR] (HDScanner) SLF4J: Your binding is version 1.5.5 or earlier.
2015-09-28 10:02:21,891 ERROR [STDERR] (HDScanner) SLF4J: Upgrade your binding to version 1.6.x.
2015-09-28 10:02:21,891 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/metasolv-web]] (HDScanner) Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
java.lang.NoSuchMethodError: org.slf4j.impl.StaticLoggerBinder.getSingleton()Lorg/slf4j/impl/StaticLoggerBinder;

如何修复此错误?此外,在我的应用程序中,我没有使用slf4j anywhere,只有Dozer库使用它。从下面的堆栈跟踪中,我看到spring应用程序正在使用slf4j,但它为什么不自己加载一个呢?

代码语言:javascript
复制
java.lang.NoSuchMethodError: org.slf4j.impl.StaticLoggerBinder.getSingleton()Lorg/slf4j/impl/StaticLoggerBinder;
    at org.slf4j.LoggerFactory.bind(LoggerFactory.java:128)
    at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:107)
    at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:295)
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:269)
    at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:156)
    at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:132)
    at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:645)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:191)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-29 03:01:25

我必须从dozer库中排除slf4j依赖项,并将依赖项直接添加到POM文件中。

正如@Powerlord所提到的,我必须添加两个库,一个用于核心slf4j,另一个是绑定库。

Maven依赖项如下。

代码语言:javascript
复制
       <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.6.6</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.6.6</version>
        </dependency>

        <dependency>
            <groupId>net.sf.dozer</groupId>
            <artifactId>dozer</artifactId>
            <version>5.5.1</version>
            <exclusions>
                <exclusion>
                    <artifactId>jcl-over-slf4j</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>slf4j-api</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
            </exclusions>
        </dependency>
票数 9
EN

Stack Overflow用户

发布于 2015-09-28 23:11:08

SLF4J是基于依赖静态绑定的。

如果您使用的是log4j,那么您的应用程序中应该有log4j绑定。

即使您没有使用slf4j,也需要有一个绑定(简单或无绑定)才能从依赖库中正确地加载它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32826250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档