2015-09-28 11 views
6
2015-09-28 10:02:21,890 ERROR [STDERR] (HDScanner) SLF4J: slf4j-api 1.6.x (or later) is incompatible with this binding. 
2015-09-28 10:02:21,891 ERROR [STDERR] (HDScanner) SLF4J: Your binding is version 1.5.5 or earlier. 
2015-09-28 10:02:21,891 ERROR [STDERR] (HDScanner) SLF4J: Upgrade your binding to version 1.6.x. 
2015-09-28 10:02:21,891 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/metasolv-web]] (HDScanner) Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener 
java.lang.NoSuchMethodError: org.slf4j.impl.StaticLoggerBinder.getSingleton()Lorg/slf4j/impl/StaticLoggerBinder; 

Wie behebe ich diesen Fehler? Außerdem verwende ich slf4j in meiner Anwendung nirgendwo, nur die Dozer-Bibliothek verwendet es. aus dem folgenden Stacktrace sehe ich, dass die Feder Anwendung der Slf4j verwendet, aber warum lädt es nicht eine selbst?SLF4J: slf4j-api 1.6.x (oder höher) ist nicht kompatibel mit dieser Bindung

java.lang.NoSuchMethodError: org.slf4j.impl.StaticLoggerBinder.getSingleton()Lorg/slf4j/impl/StaticLoggerBinder; 
    at org.slf4j.LoggerFactory.bind(LoggerFactory.java:128) 
    at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:107) 
    at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:295) 
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:269) 
    at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:156) 
    at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:132) 
    at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:645) 
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:191) 
+1

Es hilft, wenn Sie wissen, dass slf4j zwei Schichten hat. Der erste ist der Kern. Die zweite ist die Bindungen. Es klingt wie der Kern ist Version 1.6 oder höher, während die Bindung in der Version 1.5.5 oder niedriger ist. – Powerlord

+1

Wenn sich die Dateien slf4j in Ihrem 'WEB-INF/lib'-Verzeichnis befinden, können Sie das Slf4j-Binding-Jar für eine neuere Version austauschen. Wenn Sie Maven/Gradle verwenden, können Sie alternativ eine neuere Version der Bindung angeben. – Powerlord

+1

@Powerlord Wie identifiziere ich die Bindungsbibliothek? Ich sehe 'jcl-über-slf4j' und' slf4j-api' in den Abhängigkeiten. Ich verstehe, dass der zweite der Kern ist. – Zeus

Antwort

4

Ich musste die Abhängigkeiten slf4j aus der Dozer-Bibliothek ausschließen und Abhängigkeiten direkt zur POM-Datei hinzufügen.

Wie von @Powerlord erwähnt, musste ich zwei Bibliotheken hinzufügen, eine für den Kern slf4j und die andere ist eine Bindungsbibliothek.

Maven Abhängigkeiten unten.

 <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>1.6.6</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-simple</artifactId> 
      <version>1.6.6</version> 
     </dependency> 

     <dependency> 
      <groupId>net.sf.dozer</groupId> 
      <artifactId>dozer</artifactId> 
      <version>5.5.1</version> 
      <exclusions> 
       <exclusion> 
        <artifactId>jcl-over-slf4j</artifactId> 
        <groupId>org.slf4j</groupId> 
       </exclusion> 
       <exclusion> 
        <artifactId>slf4j-api</artifactId> 
        <groupId>org.slf4j</groupId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
0

SLF4J ist abhängig von Abhängigkeit statisch gebunden.

Wenn Sie log4j verwenden, sollten Sie die log4j-Bindung in Ihrer Anwendung haben.

Auch wenn Sie nicht slf4j verwenden, müssen Sie eine Bindung (einfach oder noop) haben, um es richtig aus einer abhängigen Bibliothek zu laden.

+0

Aus dem obigen Fehler sehe ich, dass ich die Bibliothek slf4j brauche, aber selbst wenn ich die Version 1.5.5 oder 1.7.5 der Bibliothek geladen habe, wird der obige Fehler nicht behoben. – Zeus

+0

Sehen Sie, ob das Hinzufügen dieser Abhängigkeit zusätzlich zur Slf4j-API hilft http://mvnrepository.com/artifact/org.slf4j/slf4j-simple –