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.
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>
И последнее, но не менее важное: журналы сохраняются и печатаются, несмотря на ошибку.
Способы воспроизведения ошибки
Первая строка на консоли будет
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>