SLF4J: не удалось загрузить класс "org.slf4j.impl.StaticLoggerBinder" - PullRequest
495 голосов
/ 14 сентября 2011

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

Приложение отлично работает в 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.

Я проверил пути к классам обоих серверов приложений, и нет другого jar-файла slf4j.

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

Ответы [ 28 ]

1 голос
/ 27 мая 2016

Согласно SLF4J официальной документации

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

Это предупреждение появляется, когда Класс org.slf4j.impl.StaticLoggerBinder не может быть загружен в объем памяти. Это происходит, когда не найдено подходящего связывания SLF4J на пути класса. Размещение одного (и только одного) из slf4j-nop.jar, slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar или logback-classic.jar на пути к классам должен решить проблему.

Просто добавьте этот jar вместе с slf4j api.jar к вашему classpath, чтобы добиться цели Желаем удачи

1 голос
/ 23 августа 2017

Я решаю это, добавив эту библиотеку: slf4j-simple-1.7.25.jar Вы можете скачать ее на официальном сайте https://www.slf4j.org/download.html

0 голосов
/ 13 апреля 2019

Вот мои 5 центов ...

У меня были те же проблемы при выполнении тестов.Поэтому я исправил это, добавив реализацию только для тестовой среды выполнения.Я использую gradle для этого проекта.

// https://mvnrepository.com/artifact/ch.qos.logback/logback-classic

testRuntimeOnly группа: 'ch.qos.logback', имя: 'logback-classic', версия:'1.2.3'

0 голосов
/ 13 июня 2016

Я использую Йену и добавляю зависимость стипендии к pom.xml

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

Я пытаюсь добавить slf4j-simple, но он просто исчезает, ошибка «SLF4J: Не удалось загрузить класс org.slf4j.impl.StaticLoggerBinder» », но logback-classic показывает более подробную информацию.

Официальный документ

0 голосов
/ 09 апреля 2019

Скорее всего, ваша проблема была из-за <scope>test</scope> (в некоторых случаях также <scope>provided</scope>), как уже упоминалось @thangaraj.

Документация говорит:

Эта область указывает, что зависимость не требуется для нормального использование приложения, и доступно только для тестовой компиляции и этапы исполнения. Тестовые зависимости не являются транзитивными и присутствуют только для путей к классам тестирования и выполнения.

Итак, если вам не нужны зависимости для целей тестирования, вы можете использовать вместо (то, что вы увидите в mvnrepository ):

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

Без каких-либо областей (по умолчанию будет область компиляции , если не предоставлена ​​другая область):

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-nop -->
<dependency>  
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-nop</artifactId>
   <version>1.7.25</version>
</dependency>

Это то же самое, что и

 <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-nop -->
 <dependency>  
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-nop</artifactId>
   <version>1.7.25</version>
   <scope>compile</scope>
 </dependency>
0 голосов
/ 06 ноября 2013

Я знаю, что этот пост немного устарел, но в случае, если кто-то еще столкнется с этой проблемой:

Добавьте slf4j-jdk14-X.X.jar к вашему CLASSPATH (где X.X.X - номер версии - например, slf4j-jdk14-1.7.5.jar).

НТН Питер

0 голосов
/ 05 июня 2019

Для меня проблема заключалась в следующем: используя Hibernate, я увидел, что он уже использовал slf4j, и он уже был в моем classpath, поэтому я решил использовать его.Следующий шаг - добавление imlementor для slf4j, поэтому я добавил в maven:

<dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-jdk14</artifactId>
        <version>1.7.25</version>
</dependency>

Но это не удалось с ошибкой!SLF4J: Не удалось загрузить класс «org.slf4j.impl.StaticLoggerBinder»

Решение было следующим: зависимость slf4j от Hibernate была версией 1.7.26 , и я добавил незначительную зависимость от версии 1.7.25 .Поэтому, когда я это исправил - все стало ОК

0 голосов
/ 25 августа 2017

решение указано на их официальном сайте:

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

Это предупреждение появляется, когда org.slf4j.implКласс .StaticLoggerBinder не может быть загружен в память.Это происходит, когда в пути к классу не найдено подходящей привязки SLF4J.Размещение одного (и только одного) из slf4j-nop.jar slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar или logback-classic.jar на пути к классам должно решить эту проблему.С 1.6.0 Начиная с версии 1.6 SLF4J, при отсутствии привязки SLF4J по умолчанию будет использовать регистратор без операций (NOP).Если вы несете ответственность за упаковку приложения и не заботитесь о ведении журнала, то размещение slf4j-nop.jar на пути к классам вашего приложения избавит от этого предупреждающего сообщения.Обратите внимание, что встроенные компоненты, такие как библиотеки или платформы, не должны объявлять зависимость от какой-либо привязки SLF4J, а зависят только от slf4j-api.Когда библиотека объявляет зависимость времени компиляции от привязки SLF4J, она накладывает эту привязку на конечного пользователя, тем самым сводя на нет цель SLF4J.

решение: я добавил в свой проект, используя исследования mavenintellij и я выбрали slf4j-jdk14.jar.

...