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. Это решит проблему.