2010-09-17 3 views
39

Ich versuche, die Beispielkacheln Beispiel here ausgeführt.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder

Unten ist mein pom.xml:

<dependencies> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>3.8.1</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.tiles</groupId> 
      <artifactId>tiles-api</artifactId> 
      <version>2.1.2</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.tiles</groupId> 
      <artifactId>tiles-core</artifactId> 
      <version>2.1.2</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.tiles</groupId> 
      <artifactId>tiles-jsp</artifactId> 
      <version>2.1.2</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>1.5.2</version> 
     </dependency> 

Wenn ich versuche, das Beispiel die folgenden Fehler wird geworfen auszuführen:

Sep 17, 2010 11:59:43 PM org.apache.catalina.core.StandardContext listenerStart 
SEVERE: Error configuring application listener of class  org.apache.tiles.web.startup.TilesListener 
java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder 
at org.slf4j.LoggerFactory.<clinit>(LoggerFactory.java:60) 
at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) 
at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:131) 
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:685) 
at org.apache.tiles.web.startup.TilesListener.<init>(TilesListener.java:49) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
at java.lang.reflect.Constructor.newInstance(Unknown Source) 
at java.lang.Class.newInstance0(Unknown Source) 
at java.lang.Class.newInstance(Unknown Source) 

Jede Idee?

Ich verbrachte 30 Minuten googeln dafür, aber konnte keine mögliche Lösung finden.

Bitte helfen Sie mir ...

Antwort

96

Sie haben eine Abhängigkeit von der SLF4J-API eingefügt, die Sie in Ihrer Anwendung für die Protokollierung verwenden. Sie müssen jedoch auch eine Implementierung einschließen, die die eigentliche Protokollierung durchführt.

Zum Beispiel durch Log4J anmelden Sie diese Abhängigkeit hinzufügen würden:

<dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>1.5.2</version> 
    </dependency> 

Die empfohlene Implementierung der Nachfolger von Log4j, die von den gleichen Typen, die SLF4J und Log4J gemacht wäre logback-Klassiker, das ist:

Hinweis: Die Versionen sind möglicherweise falsch.

+6

Um genau zu sein, Logback ist eine Abzweigung von log4j, kein Nachfolger. –

+3

org.slf4j slf4j-log4j12 1.5.2 Added die obige Abhängigkeit und es funktionierte ... 'Danke Jungs für alle – javanoob

+10

Logback replies' ist nicht eine Gabel von log4j, in der Tat Es ist ein Nachfolger. Es teilt nicht wirklich Code mit Log4j und Ceki Gülcü, der Schöpfer von beiden Frameworks, hat klar gesagt, dass bei der Erstellung: http://ceki.blogspot.fr/search?q=logback. – PomCompot

8

Sie haben die Abhängigkeit für sflj der api enthalten, aber nicht die Abhängigkeit für die Umsetzung der api, dass ein separates Glas ist, könnten Sie slf4j-simple-1.6.1 versuchen .Krug.

+1

Das hat für mich funktioniert. Ich verwende die Anwendung seit Jahren auf TomCat. Es wurde versucht, auf JBoss 5.1.1 zu laufen, und es benötigte diese Bibliothek. Ich weiß nicht, warum es auf TomCat nicht gebraucht wurde. – AgilePro

1

Fügen Sie alle Kacheln wie (Kacheln-Jsp, Kacheln-Servlet, Kacheln-Vorlage, Kacheln-extra.tiles-core) zu Ihrem Server lib-Ordner und Ihrem Anwendungsbuild-Pfad hinzu, dann funktioniert es, wenn Sie Apache mit verwenden spring mvc application

0

Kopieren Sie alle Auftragseinträge der Home-Ordner-IML-Datei in Ihre /src/main/main.iml-Datei. Dies wird das Problem lösen.