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

  • Что касается Eclipse IDE ( Indigo, Juno и Kepler (32 и 64-разрядные версии))
  • Платформы: Windows, Ubuntu, Mac
  • m2e версия: 1.1.0.20120530-0009, 1.2.0.20120903-1050, 1.3.0.20130129-0926,
    1.4.0.20130601-0317

Общая информация

Приведенная выше ошибка возникла после обновления m2e до версии 1.1. Удалив m2e 1.1 и откат до m2e 1.0, все сработало нормально. Я попытался повторить проблему в Windows и Ubuntu, и это дало мне ту же ошибку. Были протестированы многочисленные конфигурации slf4j-api и logback, но ни один из них не работает.

Ошибка появляется в любом проекте maven даже без объявления зависимости slf4j.

  • Новый проект Maven → maven-archetype-quickstart

    и

  • Новый проект Maven → Простой проект без выбора архетипа

    результат

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

Тестирование окружающей среды и конфигурации

Протестировано с Eclipse Indigo и Eclipse Juno (32 и 64 бит) на Mac, 32 бит на Ubuntu и 64 и 32 бит в Windows. Протестированные свежие установки Juno Classic, инструментов моделирования Juno, Kepler Standard, Инструменты моделирования Kepler и произвели ту же ошибку,

Ошибка появляется при чистом, установке, тесте, развертывании, источниках генерации, проверить, компилировать, пакет, интеграционный тест, проверить и комбинации цели чистые с остальными целями. Он также отображается с параметрами -e и -X. Была попытка удалить репозиторий m2e и загрузить его с нуля, но снова без успеха. Должен ли я упомянуть, что он был протестирован на трех разных машинах и в виртуальном ящике для всех вышеперечисленных систем, но он произвел ту же ошибку.

Пробовал все разные конфигурации logback (от 1.0.4 до 1.0.13), которые разрешают зависимости slf4j-api и logback-core, но все они вызывают такую ​​же ошибку:

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

Пробовал все разные (от 1.6.1 до 1.7.5) конфигурации slf4j-simple.

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

Пробовал все разные (от 1.6.1 до 1.7.5) конфигурации log4j-over-slf4j.

<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>log4j-over-slf4j</artifactId>
   <version></version>
   <scope>compile</scope>
</dependency>

Пробовал все разные (от 1.6.1 до 1.7.5) конфигурации slf4j-jdk14.

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

Пробовал все разные (от 1.6.1 до 1.7.5) конфигурации slf4j-log4j12.

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

Прошла настройку slf4j-nop 1.7.5.

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-nop</artifactId>
  <version>1.7.5</version>
  <scope>compile</scope>
</dependency>

И последнее, но не менее важное: журналы сохраняются и печатаются, несмотря на ошибку.


Способы воспроизведения ошибки

  • Загрузите Eclipse Juno, Indigo или Kepler 32 или 64 бит (все установки будут вызывают ту же ошибку).

    • Установите m2e - Интеграция Maven для Eclipse

      ИЛИ

    • Обновите версию m2e до 1.1.0.20120530-0009 или 1.2.0.20120903-1050 или 1.3.0.20130129-0926. > , или 1.4.0.20130601-0317)


    • Выберите File- > New- > Other- > Maven Project- > Нажмите "Далее" > "Выбрать" maven-archetype-quickstart из каталога- > Готово

      ИЛИ

    • Выберите File- > New- > Other- > Maven Project- > Click Next- > Select Создать простой проект (пропустить выбор архетипа) → Полная информация о артефакте → Готово

  • Щелкните правой кнопкой мыши по проекту- > Запуск As- > чистой установки (или любой другой цели, упомянутой выше).

Первая строка на консоли будет

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.

P.S. Существующие проекты будут вызывать ту же ошибку после обновления версии m2e до 1.1.0.20120530-0009 , 1.2.0.20120903-1050, 1.3.0.20130129-0926, 1.4.0.20130601-0317


Обновление

ИЗМЕНИТЬ

сайт поддержки m2e:

  • Вышеупомянутый вопрос был отправлен как ошибка в сайте поддержки m2e, и ответ от Игоря Федоренко заключался в том, что

    Нет немедленных планов по подавлению этого сообщения.

    Для просмотра приведенной выше ошибки см. официальный сайт поддержки m2e


РЕДАКТИРОВАТЬ 2
  • Приведенная выше индикация ошибки присутствует также m2e версия 1.2.0.20120903-1050


РЕДАКТИРОВАТЬ 3
  • Указанная выше индикация ошибки присутствует также для m2e версии 1.3.0.20130129-0926


РЕДАКТИРОВАТЬ 4
  • Приведенная выше индикация ошибки присутствует также для m2e версии 1.4.0.20130601-0317


РЕДАКТИРОВАТЬ 5
                              ***Reported FIXED***
  • Приведенная выше ошибка сообщается как фиксированная для m2e версии 1.5.0/Luna M3 (Target Milestone). Версия еще не доступна для скачивания.
  • Luna M3 запланировано на 15 ноября.
  • Последняя версия dev доступна здесь
  • Более подробную информацию о вехах m2e вы можете найти в главном репозитории m2e.

Ответ 1

Я также могу подтвердить эту ошибку.

Обходной путь: должен использовать внешний maven внутри m2eclipse, а не встроенный maven.

Это делается в трех шагах:

1 Установить maven на локальном компьютере (тестовая машина была Ubuntu 10.10)

mvn --version

Apache Maven 2.2.1 (rdebian-4) Java-версия: 1.6.0_20 Java home: /usr/lib/jvm/java -6-openjdk/jre Язык по умолчанию: de_DE, платформа кодировка: UTF-8 Название ОС: "linux" версия: "2.6.35-32-generic" arch: "amd64" Семья: "unix"

2 Запустите maven externally ссылку о том, как запустить maven из консоли

> cd path-to-pom.xml
> mvn test
    [INFO] Scanning for projects...
    [INFO] ------------------------------------------------------------------------
    [INFO] Building Simple
    [INFO]    task-segment: [test]
    [INFO] ------------------------------------------------------------------------
    [...]
    [INFO] Surefire report directory: [...]/workspace/Simple/target/surefire-reports

    -------------------------------------------------------
     T E S T S
    -------------------------------------------------------
    Running net.tverrbjelke.experiment.MainAppTest
    Hello World
    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.042 sec

    Results :

    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESSFUL
    [INFO] ------------------------------------------------------------------------
    [...]

3 внутри m2eclipse: переключиться с встроенный maven на локальный maven

  • узнайте, где находится локальный домашний каталог maven (google для вашего MAVEN_HOME, для меня это помогло мне, то есть /usr/share/maven2)
  • в eclipse Menu- > Window- > Preferences- > Maven- > Installation- > введите эту строку. Затем вы должны перейти на новый внешний maven.
  • затем запустите проект, например. "maven test".

Сообщение об ошибке должно исчезнуть.

Ответ 2

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

slf4j

Ответ 3

Если вы используете Gradle, добавьте это:

dependencies { 
... 
compile "org.slf4j:slf4j-simple:1.7.9" 
... 
}

Ответ 4

Имел аналогичную ошибку с тем же результатом с Gradle и смог решить ее, выполнив следующие действия:

//compile 'org.slf4j:slf4j-api:1.7.1'
compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.1'
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.1'
compile group: 'org.apache.logging.log4j', name: 'log4j-slf4j-impl', version: '2.1'

Отключенная строка - это та, которая вызвала ошибку. Я считаю, вы можете передать это Maven.

Ответ 5

Вы не указали версию в своем файле зависимостей maven, возможно, поэтому не выбираете последнюю банку
Так же, как вам нужно другое различие с slf4j-log4j12 идентификатором артефакта.
Включите это в ваш файл pom

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

Сообщите мне, если ошибка все еще не решена
Я также рекомендую вам увидеть эту ссылку

Ответ 6

Попытался посмотреть, как проблема всплыла. Поверьте, это будет хорошо читать для других, которые приходят сюда с той же проблемой:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=387064

Ответ 7

У меня была аналогичная проблема для моего приложения Spring Boot - Gradle, запущенного на Eclipse Luna. Я мог бы решить эту проблему вручную, добавив запись в мой проект .classpath

<classpathentry sourcepath="C:/Users/<username>/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-simple/1.7.7/3150039466ad03e6ef1c7ec1c2cbb0d96710cf64/slf4j-simple-1.7.7-sources.jar" kind="lib" path="C:/Users/<username>/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-simple/1.7.7/8095d0b9f7e0a9cd79a663c740e0f8fb31d0e2c8/slf4j-simple-1.7.7.jar"/>

Идея заключается в следующем этом решении. Но как реализовать зависит от случая к случаю. Одним из способов исправления является тот, который я использовал выше.

Надеюсь, что это поможет.

Ответ 8

Вставьте этот код в файл pom.xml. Это работает для меня.

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