web-dev-qa-db-fra.com

Maven SLF4J: le chemin d'accès aux classes contient plusieurs liaisons SLF4J

Je reçois Exception après la compilation de mon code Java .Veuillez indiquer comment résoudre ce conflit.

    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
23
Zahid Nisar

Exécutez mvn dependency:tree et recherchez quelle dépendance a les implémentations slf4j que vous ne voulez pas, puis exclude les avec une exclusion de dépendance comme:

<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>
55
Wouter

Cette erreur signifie que vous avez plusieurs implémentations de SLF4J dans votre chemin de classe . Recherchez ce que les erreurs disent spécifiquement. i.e: SLf4J: Found binding in..... (Ceci imprimera tous les fichiers jar où il a trouvé des instances de StaticLoggerBinder.class). Éliminez tous les fichiers de ce type dans votre chemin de classe, à l'exception du fichier dont vous avez besoin de l'implémentation StaticLoggerBinder.class.

5
Binita Bharati

Il semble que vous ayez plusieurs implémentations de SLF4J; vous devriez exclure tous les pas nécessaires

5
Angelo Immediata

Vous pouvez aller à POM.xml, ouvrir la hiérarchie des dépendances et trouver les entrées slf4j.Exceptionz une autre exclusion en cliquant avec le bouton droit de la souris sur "exclure l'artefact maven".

1
Atul Yadav

Cela marche !! Mettre à jour le fichier 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> 

0
Akitha_MJ