Подтвердить что ты не робот

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

My pom.xml содержит только одну ссылку на SLF4J:

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

Я получаю эту ошибку:

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

SLF4J: по умолчанию для реализации регистратора без операции (NOP) SLF4J:

Смотрите http://www.slf4j.org/codes.html#StaticLoggerBinder для дальнейшего подробности.

Я проверил этот URL и действительно предоставил решение: "Размещение одного (и только одного) из slf4j-nop.jar, slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar или logback-classic.jar на путь класса должен решить проблему."

Мой вопрос: , который classpath?

  • Система % CLASSPATH%? (У меня его нет, мне нужно будет создать его специально для этого)
  • Проект Eclipse .classpath? (Я думаю, что я пробовал это, но это не помогло).
  • Другое?

Я нашел довольно несколько сообщений по теме здесь на SO, но все они цитируют то же самое answer: "place... on путь класса".

Какой classpath?

4b9b3361

Ответ 1

Прежде всего, чтобы добавить SLF4J, вы должны поместить ОДИН и только ОДИН из этих зависимостей в ваш pom.xml. Это зависит от того, какую реализацию вы решите использовать. Каждая зависимость, которую вы добавляете в файл pom.xml, автоматически добавляется в путь к классам. Пока вы используете Eclipse, нет необходимости изменять систему% CLASSPATH%?

<dependency>
   <groupId>ch.qos.logback</groupId>
   <artifactId>logback-classic</artifactId>
   <version></version>
</dependency>
<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-simple</artifactId>
   <version></version>
   <scope>compile</scope>
</dependency>
<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-log4j12</artifactId>
   <version></version>
   <scope>compile</scope>
</dependency>
<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-jdk14</artifactId>
   <version></version>
   <scope>compile</scope>
</dependency>

И последнее, но не менее важное: у вас будет ошибка SLF4J: не удалось загрузить класс "org.slf4j.impl.StaticLoggerBinder".

Eclipse Juno и Indigo при использовании связанной версии Maven (m2e) не подавляют сообщение SLF4J: Не удалось загрузить класс "org.slf4j.impl.StaticLoggerBinder". Это поведение присутствует начиная с версии m2e 1.1.0.20120530-0009 и далее.

Хотя это указывается как ошибка, ваши журналы будут сохранены в обычном режиме. Выделенная ошибка все еще будет присутствовать, пока эта ошибка не будет исправлена. Подробнее об этом можно узнать на сайте поддержки m2e.

Текущее доступное решение для подавления этого сообщения состоит в том, чтобы использовать внешнюю версию Maven, а не связанную версию Eclipse. Вы можете найти информацию об этом решении и более подробную информацию об этой ошибке в следующем вопросе.

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

Ответ 2

Проблема:

Я использую Maven для управления своими зависимостями. В моем случае причиной этой ошибки было , потому что в моей системе было более одного slf4j-simple jar в моем пути к классам. Документация SLF4J гласит:

Placing one (and only one) of slf4j-nop.jar slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar or logback-classic.jar on the class path should solve the problem.

Решение:

  • Найдите в вашей файловой системе следующие jar файлы и удалите все копии, кроме одной в .m3:
    1. SLF4J-NOP
    2. SLF4J простые
    3. SLF4J-log4j12
    4. SLF4J-jdk14
    5. Logback-классик