NoClassDefFoundError:org/slf4j/impl/StaticLoggerBinder

jav*_*oob 45 java tiles slf4j

我正在尝试运行此处给出的示例切片示例.

下面是我的POM.xml:

<dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.tiles</groupId>
            <artifactId>tiles-api</artifactId>
            <version>2.1.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tiles</groupId>
            <artifactId>tiles-core</artifactId>
            <version>2.1.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tiles</groupId>
            <artifactId>tiles-jsp</artifactId>
            <version>2.1.2</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.5.2</version>
        </dependency>
Run Code Online (Sandbox Code Playgroud)

当我试图运行该示例时,抛出以下错误:

Sep 17, 2010 11:59:43 PM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Error configuring application listener of class      org.apache.tiles.web.startup.TilesListener
java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder
at org.slf4j.LoggerFactory.<clinit>(LoggerFactory.java:60)
at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155)
at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:131)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:685)
at org.apache.tiles.web.startup.TilesListener.<init>(TilesListener.java:49)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

任何的想法?

我花了30分钟谷歌搜索,但找不到可能的溶剂.

请帮我...

gpe*_*che 112

您已经在SLF4J API中包含了依赖项,这是您在应用程序中用于日志记录的依赖项,但您还必须包含执行实际日志记录工作的实现.

例如,要记录Log4J,您将添加此依赖项:

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.5.2</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

推荐的实现是logback-classic,它是Log4j的后继者,由制作SLF4J和Log4J的同一个人制作:

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>0.9.24</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

注意:版本可能不正确.

  • Logback不是log4j的分支,实际上它是继承者.它并不真正与Log4j共享代码,两个框架的创建者CekiGülcü在创建时明确指出:http://ceki.blogspot.fr/search?q = logback. (10认同)
  • 确切地说,logback是log4j的一个分支,而不是后继. (6认同)
  • <dependency> <groupId> org.slf4j </ groupId> <artifactId> slf4j-log4j12 </ artifactId> <version> 1.5.2 </ version> </ dependency>添加了上面的依赖项并且它有效...`谢谢伙计们所有回复 (3认同)
  • 对于 gradle:`实现'org.slf4j:slf4j-log4j12:1.5.2'` (2认同)

Nat*_*hes 12

你已经为sflj的api包含了依赖项,但没有包含api实现的依赖项,这是一个单独的jar,你可以试试slf4j-simple-1.6.1.jar.

  • 这对我有用.我多年来一直在TomCat上使用该应用程序.尝试在JBoss 5.1.1上运行,它需要这个库.我不知道为什么它在TomCat上不需要它..... (2认同)