Вопрос-ответ

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder"

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

Мое приложение должно быть развернуто как на tcServer, так и на WebSphere 6.1. Это приложение использует ehCache и поэтому требует slf4j в качестве зависимости. В результате я добавил slf4j-api.jar (1.6) jar в свой пакет файлов 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 нет.

У кого-нибудь есть какие-либо идеи, что здесь может происходить?

Переведено автоматически
Ответ 1

У меня была такая же проблема с WebSphere 6.1. Как указал Чеки, было множество jar-файлов, которые использовала WebSphere, и один из них указывал на более старую версию slf4j.

Резервный вариант без операции выполняется только с slf4j 1.6+, поэтому все, что старше этого, вызовет исключение и остановит ваше развертывание.

На сайте SLf4J есть документация, которая решает эту проблему. Я последовал этому и добавил slf4j-simple-1.6.1.jar в свое приложение вместе с slf4j-api-1.6.1.jar которым у меня уже было.

Если вы используете Maven, добавьте следующие зависимости, при этом ${slf4j.version} это последняя версия slf4j

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>${slf4j.version}</version>
</dependency>

Это решило мою проблему.

Ответ 2

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

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

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.21</version>
</dependency>
Ответ 4

Довольно много ответов здесь рекомендуют добавить зависимость slf4j-simple в ваш POM-файл Maven. Возможно, вы захотите проверить наличие самой последней версии.

На https://mvnrepository.com/artifact/org.slf4j/slf4j-simple вы найдете последнюю версию простой привязки SLF4J. Выберите тот, который подходит вам лучше всего (по-прежнему 1.7.32 от 2021-07 является стабильной версией по состоянию на 2021-10) и включите его в свой pom.xml.

Для вашего удобства здесь показаны некоторые зависимости, но они могут быть не актуальными, когда вы читаете это!

Альфа-версия 2024-01

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>2.1.0-alpha1</version>
<scope>test</scope>
</dependency>

Стабильная версия 2024-02

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>2.0.12</version>
<scope>test</scope>
</dependency>

Я удалил тестовую часть области видимости благодаря комментарию ниже.

2023-05-18 07:15 java