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

18

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:

     

Подробнее см. Ссылка   подробности.

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

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

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

Какой classpath?

    
задан Withheld 11.12.2012 в 22:22
источник
  • Используете ли вы maven с Eclipse.? –  Konstantinos Margaritis 12.12.2012 в 14:19
  • @ KonstantinosMargaritis Да, я использую Maven с Eclipse: 1. Eclipse 3.7.2 2. Maven 2.2.1 3. m2e plugin 1.2.0.20120903-1050. Любая идея о том, как разрешить эту ошибку, не выполняя реализацию SLF4J для регистратора без операции (NOP)? Благодарю. –  Withheld 12.12.2012 в 14:33
  • Используете ли вы логин или что-то еще. Я прошу, чтобы рассказать вам о зависимостях. –  Konstantinos Margaritis 12.12.2012 в 14:43
  • Logback - это реализация, которая может использоваться с slf4j. Если вы этого не знаете, значит, вы не используете его. Я предлагаю вам взглянуть на мой ответ здесь stackoverflow.com/questions/12382897/... о logback и slf4j. Мой ответ содержит также настройки класса, но вам это не нужно. –  Konstantinos Margaritis 12.12.2012 в 14:59
  • @ KonstantinosMargaritis Я унаследовал эту систему, поэтому было бы вполне возможно, что я использовал ее без ведома для меня. Но поиск через pom.xml не дал ссылки на «logback». Он нашел одну ссылку только на «slf4j» (это то, что рекомендуется). Я продолжу свой комментарий в ответ на ваш отличный ответ ниже. Благодарю. –  Withheld 12.12.2012 в 15:19
Показать остальные комментарии

1 ответ

14

Прежде всего, чтобы добавить 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». ошибка

    
ответ дан Konstantinos Margaritis 12.12.2012 в 14:55
  • Спасибо за этот отличный ответ. Во-первых, он отвечает на мой вопрос «какой classpath?» (не нужно следить за предложением сайта m2e, потому что slf4j-jdk14 уже упоминается в pom.xml?). Во-вторых, шаг №3 в этом ответе (ссылка, предоставленная вами) избавилась от сообщения об ошибке: «Окно»> «Настройки»> «Maven»> «Установки»> «Снять флажок»> «Добавить ... внешний». –  Withheld 12.12.2012 в 15:48
  • @ Даниэль Вы более чем рады.! Если вам нужна другая помощь с maven или ведением журнала, дайте мне знать. –  Konstantinos Margaritis 12.12.2012 в 15:56
  • @Ceki Спасибо, что указали, что из Ceki.! –  Konstantinos Margaritis 29.05.2013 в 22:49
  • Краткое описание различных фреймворков регистрации можно найти здесь: slf4j.org/manual.html#swapping –  Robert Fey 11.01.2016 в 18:30