2010-09-17 36 views
39

我試圖運行示例磁貼示例hereNoClassDefFoundError:org/slf4j/impl/StaticLoggerBinder

下面是我的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> 

當我試圖運行下面的錯誤被拋出的例子:

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) 

任何想法?

我花了30分鐘用Google搜索,但找不到可能的溶劑。

請幫我...

回答

96

您已經在SLF4J API中包含了一個依賴項,這是您在應用程序中使用的日誌記錄,但是您還必須包含一個實現真正日誌記錄工作的實現。

例如登錄通過Log4j,你想補充一點依賴性:

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

建議的實現將是的logback經典,這是Log4j的的繼任者,由製造SLF4J和Log4J的同一人提出:

<dependency> 
    <groupId>ch.qos.logback</groupId> 
    <artifactId>logback-classic</artifactId> 
    <version>0.9.24</version> 
</dependency> 

注意:版本可能不正確。

+6

準確地說,logback是log4j的分支,而不是後繼者。 – 2010-09-17 18:51:52

+3

org.slf4j SLF4J-log4j12 1.5.2 加入上述的依賴和它的工作...'謝謝你們所有replies' – javanoob 2010-09-17 18:52:41

+10

的logback不是log4j的一個岔路口,確實它是一個繼任者。它並沒有真正與Log4j共享代碼,兩個框架的創建者CekiGülcü在創建時明確聲明:http://ceki.blogspot.fr/search?q=logback。 – PomCompot 2012-11-16 15:33:10

8

您已經爲sflj的API的依賴,但不能用於API實現的依賴,這是一個獨立的罐子,你可以嘗試SLF4J-簡單1.6.1 。罐。

+1

這對我有效。多年來,我一直在使用TomCat上的應用程序。試過在JBoss 5.1.1上運行,它需要這個庫。我不知道爲什麼它不需要TomCat ..... – AgilePro 2015-10-28 12:57:10

1

將所有的瓷磚瓶子像(tiles-jsp,tiles-servlet,tiles-template,tiles-extras.tiles-core)添加到你的服務器lib文件夾和你的應用程序構建路徑,然後它工作,如果你使用apache tailes彈簧mvc應用程序

0

將home文件夾.iml文件的所有訂單條目複製到您的/src/main/main.iml文件中。 這將解決問題。