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 ]

5 голосов
/ 28 декабря 2017

Я столкнулся с аналогичной проблемой с приложениями Spring-boot-2 с библиотекой Java 9.

Добавление следующей зависимости в моем файле pom.xml решило эту проблему для меня:

    <dependency>
        <groupId>com.googlecode.slf4j-maven-plugin-log</groupId>
        <artifactId>slf4j-maven-plugin-log</artifactId>
        <version>1.0.0</version>
    </dependency>
5 голосов
/ 13 ноября 2016

Slf4j - это фасад для базовых каркасов журналирования, таких как log4j, logback, java.util.logging.

Для соединения с базовыми каркасами slf4j использует привязку.

  • log4j - slf4j-log4j12-1.7.21.jar
  • java.util.logging - slf4j-jdk14-1.7.21.jar и т. Д.

Вышеуказанная ошибка выдается, если отсутствует переплетВы можете скачать этот jar-файл и добавить его в classpath.

Для зависимостей maven,

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

Эта зависимость в дополнение к slf4j-log4j12-1.7.21.jar будет тянуть slf4j-api-1.7.21.jar, а также log4j-1.2.17.jar в ваш проект

Ссылка: http://www.slf4j.org/manual.html

4 голосов
/ 27 июля 2017

Пожалуйста, добавьте следующие зависимости в pom для решения этой проблемы.

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-simple</artifactId>
  <version>1.7.25</version>
  <scope>test</scope>
</dependency>

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>1.7.25</version>
</dependency>
4 голосов
/ 16 сентября 2011

В случае Websphere у вас есть более старая версия slf4j-api.jar, 1.4.x.или 1.5.х где-то валяется.Поведение, которое вы наблюдаете на tcServer, то есть переходе на NOP, происходит в slf4j версий 1.6.0 и новее.Убедитесь, что вы используете slf4j-api-1.6.x.jar на всех платформах и что в пути к классам нет более старой версии slf4j-api.

4 голосов
/ 22 января 2014

Я попал в эту проблему, когда я получил следующую ошибку:

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.

, когда я использовал slf4j-api-1.7.5.jar в моем libs.

Inspite, я пробовал с предложеннымбаночки дополнения, такие как slf4j-log4j12-1.7.5.jar, slf4j-simple-1.7.5, сообщение об ошибке все еще сохраняется.Проблема, наконец, была решена, когда я добавил slf4j-jdk14-1.7.5.jar в библиотеку Java.

Получить весь пакет slf4j на http://www.slf4j.org/download.html

3 голосов
/ 24 октября 2018

Как SLF4J Руководство состояния

Простой фасад ведения журнала для Java (SLF4J) служит простым фасадом или абстракцией для различных сред ведения журналов, таких как java.util.logging, logback и log4j.

и

Предупреждение исчезнет, ​​как только вы добавите привязку к пути вашего класса.

Таким образом, вы должны выбрать, какую привязку вы хотите использовать.

NoOp-привязка (slf4j-nop)

Bindingдля NOP - молча отбрасывать все записи.

Проверить свежую версию на https://search.maven.org/search?q=g:org.slf4j%20AND%20a:slf4j-nop&core=gav

Простое связывание (slf4j-simple)

выводит все события в System.err.Печатаются только сообщения уровня INFO и выше.Эта привязка может быть полезна в контексте небольших приложений.

Проверьте свежую версию на https://search.maven.org/search?q=g:org.slf4j%20AND%20a:slf4j-simple&core=gav

Привязки для каркасов ведения журналов (java.util.logging, logback, log4j)

Вам понадобится одна из этих привязок, если вы собираетесь записывать журнал в файл.

См. описание и инструкции на https://www.slf4j.org/manual.html#projectDep


Мое мнение

Я бы порекомендовал Logback , поскольку он является преемником проекта log4j .

Проверьте последнюю версию привязки для нее на https://search.maven.org/search?q=g:ch.qos.logback%20AND%20a:logback-classic&core=gav

Вы получаете консольный вывод из коробки, но если вам нужно записать журналы в файл, просто поместите FileAppender конфигурацию в src/main/resources/logback.xml илиsrc/test/resources/logback-test.xml просто так:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!-- encoders are assigned the type
             ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>logs/logs.log</file>

        <encoder>
            <pattern>%date %level [%thread] %logger{10} - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="debug">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </root>

    <logger level="DEBUG" name="com.myapp"/>
</configuration>

(подробное описание см. в руководстве: https://logback.qos.ch/manual/configuration.html)

3 голосов
/ 29 октября 2013

Я работаю в проекте Struts2 + Spring.Так что нужна зависимость slf4j-api-1.7.5.jar.

Если я запускаю проект, я получаю сообщение об ошибке типа

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

Я решил свою проблему, добавив slf4j-log4j12-1.7.5.jar.

Поэтому добавьте эту флягу в ваш проект, чтобы решить проблему.

2 голосов
/ 02 февраля 2018

Я добавил эту зависимость для решения этой проблемы:

https://mvnrepository.com/artifact/org.slf4j/slf4j-simple/1.7.25
2 голосов
/ 28 мая 2018

В качестве альтернативы включению банок и чистым решениям maven, вы можете включить его от maven с Gradle.

Пример для версии 1.7.25

// https://mvnrepository.com/artifact/org.slf4j/slf4j-simple
api group: 'org.slf4j', name: 'slf4j-simple', version: '1.7.25'

Поместите это в зависимости от вашего build.gradle файла.

1 голос
/ 03 июня 2019
     <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>1.7.21</version>
    </dependency>

Поместить вышеупомянутую зависимость в файл pom.xml

...