2014-04-06 9 views
18

Dostaję następujący wyjątek podczas kompilowania mojego kodu Java. Proszę wyjaśnić, jak rozwiązać ten konflikt.Maven SLF4J: Ścieżka klasy zawiera wiele powiązań SLF4J

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 
+0

Czy przestrzegać instrukcji instalacji dla slf4j? –

Odpowiedz

48

Run mvn dependency:tree i wyszukiwania, które zależność mają implementacje slf4j nie chcesz, to wykluczyć je z wykluczeniem zależności jak:

<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> 
+3

To pytanie dotyczy całego stosu przepełnienia, ale to było w końcu to, czego potrzebowałem! – mayhewsw

+0

Jak wykluczyć wiązanie w czasie wykonywania, gdy powiązanie pochodzi z zewnętrznej ścieżki klas? – nir

+0

Chcesz, aby był w kompilacji, ale wyłączone w czasie wykonywania? – Wouter

5

Wygląda na to, że masz kilka implementacji SLF4J; należy wykluczyć wszelkie nie potrzebne te

3

Ten błąd oznacza, że mieć wiele implementacji SLF4J w ścieżce klas. Sprawdź, co dokładnie mówią błędy. tj .: SLf4J: Found binding in..... (Spowoduje to wydrukowanie wszystkich plików JAR, w których odnaleziono wystąpienia StaticLoggerBinder.class). Wyeliminuj wszystkie takie słoiki ze swojej ścieżki klas, z wyjątkiem słoika, którego potrzebujesz w celu wykonania StaticLoggerBinder.class.

1

Możesz przejść do pom.xml, otwarty Zależność hierarchii i znaleźć slf4j entries.Except jeden wykluczyć resztę nich klikając prawym przyciskiem myszy „wyklucza maven artefakt”

+0

W którym IDE mogę to zrobić? – opncow

Powiązane problemy