NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder

Я пытаюсь запустить пример примера плиток, приведенный здесь.

Ниже мой 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>

Когда я пытаюсь запустить пример, выдается следующее сообщение об ошибке:

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)

Любая идея?

Я потратил на это 30 минут, но не смог найти возможного решения.

Пожалуйста, помогите мне...

6 ответов

Решение

Вы включили зависимость от SLF4J API, который вы используете в своем приложении для ведения журнала, но вы также должны включить реализацию, которая выполняет настоящую работу по ведению журнала.

Например, чтобы войти через Log4J, вы бы добавили эту зависимость:

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.5.2</version>
    </dependency>

Рекомендованной реализацией будет logback-classic, являющийся преемником Log4j, созданный теми же парнями, что и SLF4J и Log4J:

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>0.9.24</version>
</dependency>

Примечание. Версии могут быть неверными.

Вы включили зависимость для API sflj, но не зависимость для реализации API, то есть отдельного jar, вы можете попробовать slf4j-simple-1.6.1.jar.

Добавьте все jar-файлы плиток (tile-jsp,tile-servlet,tile-template,tile-extras.tiles-core) в папку lib вашего сервера и путь сборки приложения, после чего он будет работать, если вы используете apache tailes с приложением spring mvc

У меня была такая же ошибка при работе с hibernate, я добавил ниже зависимости в моем pom.xml, который решил проблему

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.10</version>
    </dependency>

ссылка https://mvnrepository.com/artifact/org.slf4j/slf4j-api

Хорошей практикой для обеспечения согласованности версий SL4J является централизация версии в свойстве, подобном этому:

      ...
    <properties>
        <org.slf4j.version>1.5.2</org.slf4j.version><!-- SLF4J release -->
    </properties>
...
     <dependencies>
        <!-- SL4J with LOG4J implementation -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${org.slf4j.version}</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${org.slf4j.version}</version>
        </dependency>
...

Скопируйте все записи заказа из домашней папки.iml в ваш файл /src/main/main.iml. Это решит проблему.

Другие вопросы по тегам