Maven SLF4J: путь класса содержит несколько привязок SLF4J

Я получаю следующие исключения во время выполнения при запуске моего Java-кода. Может кто-нибудь, пожалуйста, помогите мне разрешить конфликты.

    SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/Air/Desktop/sms/slf4j-1.7.7/slf4j-android-1.7.7.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Users/Air/Desktop/sms/slf4j-1.7.7/slf4j-jcl-1.7.7.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Users/Air/Desktop/sms/slf4j-1.7.7/slf4j-jdk14-1.7.7.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Users/Air/Desktop/sms/slf4j-1.7.7/slf4j-log4j12-1.7.7.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Users/Air/Desktop/sms/slf4j-1.7.7/slf4j-nop-1.7.7.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Users/Air/Desktop/sms/slf4j-1.7.7/slf4j-simple-1.7.7.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.AndroidLoggerFactory]
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: java.lang.RuntimeException: Fatal error in constructor!
    ... 2 more

Ответы

Ответ 1

Запустите mvn dependency:tree и выполните поиск, в зависимости от которых вам не нужны реализации slf4j, а затем исключите их с исключением зависимостей, например:

<dependency>
    <groupId>org.someexternallib</groupId>
    <artifactId>someexternallibartifact</artifactId>
    <version>...</version>

    <exclusions>
       <exclusion> 
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-log4j12</artifactId>
       </exclusion>
       <exclusion> 
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
      </exclusion>
    </exclusions> 
</dependency>

Ответ 2

Кажется, у вас несколько реализаций SLF4J; вы должны исключить все ненужные

Ответ 3

Эта ошибка означает, что у вас есть несколько реализаций SLF4J в вашем пути к классам. Посмотрите, что конкретно говорят ошибки. i.e: SLf4J: Found binding in..... (Здесь будут напечатаны все файлы jar, где будут найдены экземпляры StaticLoggerBinder.class). Устраните все такие баночки из вашего пути к классам, за исключением флага, в котором вам нужна реализация StaticLoggerBinder.class.

Ответ 4

Это работает !! Обновите porm.xml

<dependency>
<groupId>org.someexternallib</groupId>
<artifactId>someexternallibartifact</artifactId>
<version>...</version>

<exclusions>
   <exclusion> 
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
   </exclusion>
   <exclusion> 
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
  </exclusion>
</exclusions> 

Ответ 5

Вы можете перейти к POM.xml, открыть иерархию зависимостей и найти записи slf4j. Кроме того, исключить остальные из них, щелкнув правой кнопкой мыши "исключить артефакт maven"