SLF4J: Не удалось загрузить класс "org.slf4j.impl.StaticLoggerBinder"
Описание проблемы:
Я разрабатываю приложение, которое будет развернуто на серверах tcServer и WebSphere 6.1. В этом приложении используется ehCache, поэтому в качестве зависимости необходим slf4j. В результате я добавил файл slf4j-api.jar (версии 1.6) в пакет WAR.
Приложение работает корректно на tcServer, за исключением следующей ошибки:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Однако при развертывании на WebSphere я получаю ошибку:
java.lang.NoClassDefFoundError: org.slf4j.impl.StaticLoggerBinder
При этом возникает также ошибка:
Failed to load class "org.slf4j.impl.StaticMDCBinder"
Я проверил класспассы на обоих серверах приложений, и других JAR-файлов slf4j там нет.
У кого-то есть идеи, что может происходить?
5 ответ(ов)
Это для тех, кто попал сюда через поиск в Google.
Если вы используете Maven, просто добавьте следующее:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.5</version>
</dependency>
Или вы можете использовать:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.6.4</version>
</dependency>
Выберите подходящий вариант в зависимости от ваших потребностей!
Просто добавьте это в ваш pom.xml
:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.21</version>
</dependency>
Некоторые ответы здесь рекомендуют добавить зависимость slf4j-simple в ваш файл POM Maven. Не забудьте проверить актуальную версию.
На сайте https://mvnrepository.com/artifact/org.slf4j/slf4j-simple вы найдете последнюю версию SLF4J Simple Binding. Выберите ту, которая вам больше подходит (на момент октября 2021 года стабильной версией оставалась 1.7.32 от июля 2021 года) и добавьте ее в ваш pom.xml
.
Для вашего удобства здесь представлены некоторые зависимости, однако имейте в виду, что они могут быть устаревшими, когда вы их читаете!
Альфа-версия на январь 2024 года
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>2.1.0-alpha1</version>
</dependency>
Стабильная версия на февраль 2024 года
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>2.0.12</version>
</dependency>
Я убрал часть про область действия test
, благодаря комментарию ниже.
Вам нужно добавить следующий JAR файл в ваш classpath: slf4j-simple-1.6.2.jar
. Если у вас его нет, пожалуйста, скачайте его. Для дополнительной информации обратитесь к следующему ресурсу: http://www.slf4j.org/codes.html#multiple_bindings.
Это предупреждение возникает, когда в classpath не найдено подходящее связывание SLF4J. В сообщении говорится: SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
.
Чтобы устранить эту проблему, необходимо добавить одну из следующих библиотек в classpath: *slf4j-nop.jar*, *slf4j-simple.jar*, *slf4j-log4j12.jar*, *slf4j-jdk14.jar*
или *logback-classic.jar*
.
Например, вы можете добавить следующий код в ваш build.gradle
:
// build.gradle
dependencies {
implementation("org.slf4j:slf4j-api:1.6.1")
implementation("org.slf4j:slf4j-simple:1.6.1")
}
Если вы используете проект на Maven, добавьте соответствующий код в ваш pom.xml
. Это должно решить проблему с отсутствием подходящего связывания SLF4J.
Как работают сервлеты? Инстанцирование, сессии, общие переменные и многопоточность
Разница между StringBuilder и StringBuffer
Java 8: Преобразование List<V> в Map<K, V>
Возможные значения конфигурации hbm2ddl.auto в Hibernate и их назначение
Что такое PECS (Producer Extends Consumer Super)?