SLF4J: Не вдалося завантажити клас "org.slf4j.impl.StaticLoggerBinder". помилка


115
  • Щодо IDE Eclipse ( 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 .

  • Проект New Maven -> maven-архетип-швидкий старт

    і

  • Проект New 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 Modeling , Kepler Standard , Kepler Modeling Tools та призвели до тієї ж помилки.

Помилка з’являється при очищенні , встановленні , тестуванні , розгортанні , генеруванні джерел , валідації , компіляції , пакеті , інтеграції-тесті , перевірці та комбінаціях цілі очищення з іншими цілями. Він з'являється також з параметрами -e і -X . Була спроба видалити m2e сховище та завантажити його з нуля, але знову без успіху. Слід зазначити, що він був протестований у трьох різних машинах та віртуальній коробці у всіх перерахованих вище системах, але це дало ту саму помилку.

Перепробували всі різні конфігурації зворотного зв'язку (від 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-прості конфігурації.

<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 Integration for Eclipse

      АБО

    • Оновіть версію m2e до 1.1.0.20120530-0009 або 1.2.0.20120903-1050 або 1.3.0.20130129-0926 або 1.4.0.20130601-0317 )


    • Виберіть Файл-> Нове-> Інше-> Maven Project-> Клацніть Далі-> Виберіть
      maven-archetype-quickstart з каталогу-> Готово

      АБО

    • Виберіть Файл-> Нове-> Інше-> Проект Maven-> Клацніть Далі-> Виберіть Створити простий проект (пропустити вибір архетипу) -> Повна інформація про артефакт-> Готово

  • Клацніть правою кнопкою миші на проект-> Запускається як-> чиста установка (або будь-яка інша мета, згадана вище)

Перший рядок на консолі буде

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.

PS Існуючі проекти призведуть до тієї ж помилки після оновлення версії m2e до 1.1.0.20120530-0009 , 1.2.0.20120903-1050 , 1.3.0.20130129-0926 , 1.4.0.20130601-0317


Оновлення

EDIT

Сайт підтримки m2e:

  • Наведене вище питання було розміщено як помилка на сайті підтримки m2e, і відповідь Ігоря Федоренка була такою

    Немає негайних планів придушити це повідомлення.

    Для перегляду вищевказаної помилки зверніться до офіційного веб-сайту підтримки m2e


EDIT 2

  • Вище індикація помилки є присутній також M2e версії 1.2.0.20120903-1050


EDIT 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 листопада .
  • Останні версії розробників доступні тут
  • Більше інформації про основні етапи m2e ви можете знайти в головному сховищі m2e .

@EliranMalka Це довго, але з причиною. Намагання допомогти людям не задавати однакові запитання та включити кожну деталь, яка може здатися необхідною для того, щоб зрозуміти, чи стикаються вони з тією ж проблемою, не дала мені занадто багато варіантів. :-)
Костянтинос Маргаритис

Я отримав цю помилку під час спроби використовувати весняні дані з neo4j, які я маю slf4jв обох, slf4j-api-1.7.7і jcl-over-slf4j-1.7.7якщо я спробую видалити когось із них, я отримую повідомлення про помилку, в якому Loggerйдеться про відсутність їх класу. Що я повинен зробити?
користувач1885868

@KonstantinosMargaritis Ви можете, скажіть, як це виправити за допомогою pom.xml, я можу зробити це, коли він працює на локальних налаштуваннях, але на джинкінах це завжди не вдається.
vikramvi

Яка ваша поточна настройка @vikramvi?
Костянтинос Маргаритис

@KonstantinosMargaritis дякую, що повернувся до цього питання. Я зрозумів, що maven версію 3.0 на Linux оновлено до останньої версії та спробував ще раз. це вирішило проблему. Але довелося провести цілий день, намагаючись з’ясувати, що може бути не так. Спасибі все одно.
vikramvi

Відповіді:


75

Я також можу підтвердити цю помилку.

Упорядкування: використовувати зовнішню шайбу всередині m2eclipse, а не вбудовану.

Це робиться в три етапи:

1 Встановіть maven на локальну машину (тестовою машиною було Ubuntu 10.10)

mvn - конверсія

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

2 Виконати Maven зовні посилання, як запустити 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

  • з'ясувати , де місцевий фахівець додому установки спрямовані ( mvn --versionабо Google для вашого MAVEN_HOME, для мене це допомогло мені , що це /usr/share/maven2)
  • у затемненні Меню-> Вікно-> Налаштування-> Maven-> Установка-> введіть цей рядок. Тоді вам слід було б перейти на ваш новий зовнішній апарат.
  • потім запустіть проект як наприклад "тест Maven".

Повідомлення про помилку має бути відсутнє.


1
Я приймаю вашу відповідь, оскільки це єдине рішення, щоб обійти набридливу помилку. Дуже дякую за вашу аналітичну відповідь. :) ..
Костянтинос Маргарити

3
Хм, я перебуваю в Windows і перейшов на нові зовнішні установки, однак помилка все ще існує!
stefan.at.wpf

4
вибачте, це працює. Зверніть увагу, що в конфігураціях запуску є можливість для Maven часу виконання (внутрішнього / зовнішнього). тому якщо ви використовуєте збережений, обов’язково оновіть його.
stefan.at.wpf

@ stefan.at.wpf Приємно чути, що це працює. Якщо ви хочете, ви можете підписатися на список розсилки про помилку, і ви можете отримати інформацію, якщо щось зміниться.
Константинос Маргаритис

2
Для мене #mvn --versionзручно показувати MAVEN_HOME.
biaobiaoqi

25

На сайті SLf4J є документація для вирішення цього питання. Я дотримувався цього і додав slf4j-simple-1.6.1.jar до моїх заявок разом із slf4j-api-1.6.1.jar, які я вже мав. Це вирішило мою проблему

slf4j


4
це працює, в maven можна додати: <dependency> <groupId> org.slf4j </groupId> <artifactId> slf4j-simple </artifactId> <version> 1.XX </version> </dependency> // Просто замініть на Ваша версія
Енріке Сан-Мартін

@Mohammed Irfan, чи потрібно мені додати цю двояку в папку libs при затемненні?
Ерум

1
Я використовую пізнішу версію Мейвена і дотримувався вищезазначених кроків, але саме ця відповідь призвела до відмови проблеми - спасибі :)
Роб Вілсон

15

Якщо ви використовуєте Gradle, додайте це:

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

Тут працює з Gradle !! Чи можете ви пояснити, що станеться, коли ми додамо цю бібліотеку?
Феліпе Перейра

5

Була аналогічна помилка з тим самим результатом з 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'

Рядок із коментуванням - це той, що спричинив вихід помилок. Я вірю, що ти можеш перенести це в Мейвен.


3

Ви не вказали версію у вашому файлі залежності від Maven, ось чому він не
вибирає останню банку, а також вам потрібна інша залежність з slf4j-log4j12ідентифікатором артефакту.
Включіть це у свій файл пам’яті

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

Повідомте мене, якщо помилка все ж не усунена,
я також рекомендую вам переглянути це посилання


3
Всі заявлені версії були перевірені. Я не декларував це там, щоб уникнути повторення. Тег лишився порожнім навмисно. Зверніть увагу, що вищевказана проблема була розміщена як помилка на веб-сайті підтримки m2e, і немає жодного способу вирішити вищезгадану помилку, якщо тільки не придушено розробниками m2e. Я читав веб-сайт багато разів, і я включив усі можливі бібліотеки, які могли б вирішити проблему. На жаль, жодна конфігурація не працювала, оскільки це стосується m2e, а не оголошених залежностей. Вищевказана помилка не відображається в консолі Maven або Netbeans.ONLY у Eclipse.
Костянтинос Маргаритис

1
slf4j-log4j12 - це ще одна прив'язка разом із slf4j-simple, slf4j-jdk14 та класифікацією зворотного зв'язку. Будь-яка з перерахованих вище залежностей повинна була вирішити питання із прив'язкою. Як я пояснював раніше, проблема полягає в m2e. Все одно, дякую.
Константинос Маргаритис

3

Вставте цей код у файл pom.xml. Це працює для мене.

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

Він вирішує помилку “org.slf4j.impl.StaticLoggerBinder”, але тепер реєструю все, я кладу log4j.xml та log4j.properties (по одному) у src / test / ресурси, тепер усі рамки мого проекту реєструються тонни повідомлень, крім моїх власних журналів.
OJVM

1

Переглянув проблему, викривши її. Повірте, це буде корисним прочитанням для інших, хто сюди зійшов із тим же питанням:

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


будь ласка, надайте повну відповідь, а не лише посилання.
slfan

@Prince Якщо ви прочитаєте опис запитання, ви можете знайти частину, в якій написано "Для перегляду вищезгаданої помилки, будь ласка, зверніться до офіційного веб-сайту підтримки m2e", який вказує на вказаний вами URL.
Константинос Маргаритис

На жаль .. Моє погано. Щирі вибачення!
Принц

1

У мене була аналогічна проблема для моєї програми 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"/>

Ідея слідувати цим рішенню. Але як реалізувати, залежить від конкретного випадку. Один із способів виправлення - той, який я використовував вище.

Сподіваюся, це допомагає.


0

Це не повідомлення про помилку, а попередження. Це дуже чітко пояснюється на їхньому веб-сайті як:

Про це попередження, тобто не про помилку, повідомляється повідомлення, коли жодного постачальника послуг SLF4J не вдалося знайти на шляху до класу. Розміщення однієї (і єдиної) slf4j-nop.jar slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar або logback-classic.jar на шляху класу повинно вирішити проблему. Зауважте, що ці провайдери повинні орієнтуватися на slf4j-api 1.8 або новішої версії.

У разі відсутності постачальника, SLF4J за замовчуванням буде провайдером реєстратора без роботи (NOP).

https://www.slf4j.org/codes.html#StaticLoggerBinder


0

У мене була така ж проблема, коли я написав програму продюсерів Kafka, використовуючи java. Ця помилка виникає через неправильну бібліотеку slf4j. використовуйте нижче slf4j-просту залежність Maven, яка виправить вашу проблему.

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.6.1</version>
    <scope>test</scope>
</dependency>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.