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 ]

447 голосов
/ 29 марта 2012

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

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

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

Это решило мою проблему. Надеюсь, что это поможет другим, у кого есть эта проблема.

304 голосов
/ 14 февраля 2014

Это для тех, кто пришел сюда из поиска 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>
41 голосов
/ 14 сентября 2011

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

34 голосов
/ 21 апреля 2016

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

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-simple</artifactId>
  <version>1.7.21</version>
</dependency>
26 голосов
/ 12 января 2018

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

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

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

Альфа-версия 2019-06

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-simple</artifactId>
  <version>2.0.0-alpha0</version>
</dependency>

Бета-версия февраля 2019

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.8.0-beta4</version>
</dependency>

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

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

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

22 голосов
/ 04 марта 2018

Я столкнулся с той же ошибкой.Я настроил slf4j-api, slf4j-log4j12 и log4j в моей локальной разработке.Все настройки были в порядке, но зависимость slf4j-log4j12, которую я скопировал из mvnrepository, имела тестовую область <scope>test</scope>.Когда я убрал это, все в порядке.

Иногда глупые ошибки ломают нам голову;)

18 голосов
/ 11 апреля 2017

Иногда мы должны видеть примечание из предупреждения, например.SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details..

Вы можете найти причину, по которой появляется это предупреждение.
Добавление одного из банок из *slf4j-nop.jar, slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar или logback-classic.jar* в путь к классу должно решитьпроблема.

compile "org.slf4j:slf4j-api:1.6.1" compile "org.slf4j:slf4j-simple:1.6.1"

например, добавьте приведенный выше код к вашему build.gradle или соответствующий код к pom.xml для проекта maven.

14 голосов
/ 29 мая 2012

поместите файл slf4j-log4j12-1.6.4.jar в путь к классам.

10 голосов
/ 13 апреля 2014

Если вы используете maven для управления зависимостями, вы можете просто добавить следующую зависимость в pom.xml

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.5.6</version>
</dependency>

Для пользователей не Maven Просто скачайте библиотеку и поместите ее в classpath вашего проекта.

Здесь вы можете увидеть детали: http://www.mkyong.com/wicket/java-lang-classnotfoundexception-org-slf4j-impl-staticloggerbinder/

8 голосов
/ 08 августа 2012

SLF4j - это абстракция для различных каркасов .Следовательно, помимо наличия slf4j, вы должны включить в ваш путь к классам любую вашу инфраструктуру ведения журналов, такую ​​как log4j или logback (и т. Д.).
Чтобы иметь представление, см. Первый шаг ребенка в http://logback.qos.ch/manual/introduction.html

...