9

SLF4J: Не удалось загрузить класс "org.slf4j.impl.StaticLoggerBinder"

13

Описание проблемы:

Я разрабатываю приложение, которое будет развернуто на серверах 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 ответ(ов)

4

Это для тех, кто попал сюда через поиск в 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>

Выберите подходящий вариант в зависимости от ваших потребностей!

1

Просто добавьте это в ваш pom.xml:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.7.21</version>
</dependency>
0

Некоторые ответы здесь рекомендуют добавить зависимость 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, благодаря комментарию ниже.

0

Вам нужно добавить следующий JAR файл в ваш classpath: slf4j-simple-1.6.2.jar. Если у вас его нет, пожалуйста, скачайте его. Для дополнительной информации обратитесь к следующему ресурсу: http://www.slf4j.org/codes.html#multiple_bindings.

0

Это предупреждение возникает, когда в 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.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь