2012-07-05 105 views
8

我是新來的maven和最近兩天,我嘗試將maven集成到一個小型web項目中。 (我使用Eclipse Juno作爲IDE)。 首先,我使用「mvn-archetype-webapp」命令生成了一個新項目(結構),並將項目中的源複製到此結構中。 然後我把所有的依賴添加到pom.xml中,這樣我就可以用tomcat7插件編譯和啓動項目。SLF4J綁定錯誤

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". 
    SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: 
    See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 

我的pom.xml依賴關係是這樣的:

<!-- properties --> 
    <properties> 
     <spring.version>3.1.1.RELEASE</spring.version> 
    </properties> 

    <!-- dependencies --> 
    <dependencies> 

     <!-- logging --> 
     <dependency> 
      <groupId>ch.qos.logback</groupId> 
      <artifactId>logback-classic</artifactId> 
      <version>1.0.6</version> 
     </dependency> 

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

     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>jcl-over-slf4j</artifactId> 
      <version>1.6.6</version> 
      <scope>runtime</scope> 
     </dependency> 

     <!-- junit --> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>3.8.1</version> 
      <scope>test</scope> 
     </dependency> 

     <!-- Spring 3 --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <version>${spring.version}</version> 
      <exclusions> 
       <exclusion> 
        <groupId>commons-logging</groupId> 
        <artifactId>commons-logging</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>${spring.version}</version> 
      <exclusions> 
       <exclusion> 
        <groupId>commons-logging</groupId> 
        <artifactId>commons-logging</artifactId> 
       </exclusion> 
      </exclusions>      
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>${spring.version}</version> 
      <exclusions> 
       <exclusion> 
        <groupId>commons-logging</groupId> 
        <artifactId>commons-logging</artifactId> 
       </exclusion> 
      </exclusions>    
     </dependency> 

     <!-- jee --> 
     <dependency> 
      <groupId>javax</groupId> 
      <artifactId>javaee-web-api</artifactId> 
      <version>6.0</version> 
      <scope>provided</scope> 
     </dependency> 

     <!-- tiles --> 
     <dependency> 
      <groupId>org.apache.tiles</groupId> 
      <artifactId>tiles-core</artifactId> 
      <version>2.2.2</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.tiles</groupId> 
      <artifactId>tiles-api</artifactId> 
      <version>2.2.2</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.tiles</groupId> 
      <artifactId>tiles-jsp</artifactId> 
      <version>2.2.2</version> 
     </dependency> 

     <!-- jstl --> 
     <dependency> 
      <groupId>jstl</groupId> 
      <artifactId>jstl</artifactId> 
      <version>1.2</version> 
     </dependency> 
    </dependencies> 

有人可以幫助我解決這個問題 到目前爲止,一切都在每一個行家指令開始工作,除了SLF4J錯誤消息罰款?

+0

可能重複的[SLF4J:未能加載類「org.slf4j.impl.StaticLoggerBinder」。錯誤](http://stackoverflow.com/questions/11916706/slf4j-failed-to-load-class-org-slf4j-impl-staticloggerbinder-error) – 2013-10-07 09:57:08

回答

8

當使用捆綁maven版本(m2e)時,Eclipse Juno和Indigo不禁止消息SLF4J:無法加載類「org.slf4j.impl.StaticLoggerBinder」。此行爲在m2e 1.1.0.20120530-0009及之後的版本中提供。

雖然這表示爲錯誤,您的日誌將正常保存。突出顯示的錯誤仍然存​​在,直到修復此錯誤。更多關於m2e support site的信息。

當前可用的解決方案是使用外部maven版本而不是捆綁版本的Eclipse。您可以在下面的問題中找到關於此解決方案以及有關此錯誤的更多詳細信息,這與您所面對的問題完全相同。

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". error

0

嘗試添加logback-core的依賴關係。

<dependency> 
     <groupId>ch.qos.logback</groupId> 
     <artifactId>logback-core</artifactId> 
     <version>1.0.6</version> 
     <scope>runtime</scope> 
    </dependency> 
+0

謝謝,但這並不奏效。相同的錯誤消息:( – 2012-07-05 20:21:32

+0

)聲明logback-classic足以通過Maven依賴傳遞來引入logback-core以及slf4j-api。不需要聲明logback-core爲依賴 – Ceki 2012-07-06 07:48:22

1

依賴聲明看起來不錯。 Logback和slf4j將在您的網絡應用程序中發貨。不過,我懷疑slf4j-api.jar是以某種方式包含在Tomcat中(但不是logback)。

順便說一句,mvn dependency:tree命令是你的朋友。它說什麼?

+0

添加maven依賴關係到我的答案, (是的,幾個月後還在發生......) – Tim 2012-10-04 16:07:53

3

我遇到同樣的問題:我已將POM複製到一個空項目中,並將其削減到幾乎沒有任何內容(請參閱下文) - 並且仍然看到該錯誤。我可以驗證它不會因爲向POM添加SLF4J綁定(logback等)而消失 - 消息顯然來自Maven本身,而不是正在編譯和測試的項目軟件。 (我現在從一個完全空的項目中獲得它)。

我能弄清楚的最好的事情是我認爲它與Eclipse有關:當我手動運行Maven,從命令行,錯誤不會出現 - 只有在Eclipse下調用時纔會出現。 (我使用的Eclipse太陽神2版MacOSX上,僅供參考,所以我們知道這個問題並不限於您的版本,朱諾)

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 

    <modelVersion>4.0.0</modelVersion> 
    <groupId>testing</groupId> 
    <artifactId>testing</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 

</project> 

僅供參考,以響應Ceki的建議,這裏的結果maven的依賴樹目標:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". 
SLF4J: Defaulting to no-operation (NOP) logger implementation 
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 
[INFO] Scanning for projects... 
[INFO]                   
[INFO] ------------------------------------------------------------------------ 
[INFO] Building testing 0.0.1-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ testing --- 
[INFO] testing:testing:jar:0.0.1-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 1.496s 
[INFO] Finished at: Thu Oct 04 10:05:41 MDT 2012 
[INFO] Final Memory: 9M/81M 
[INFO] ------------------------------------------------------------------------ 

沒有太多的信息,但它就是這樣。

3

這個錯誤來自eclipse運行maven,而不是來自你的項目,所以它不應該影響你的構建過程或結果文件。

我認爲這是一個與使用非slf4j或其他日誌記錄工具的maven相關的問題,但eclipse或maven插件試圖。

擺脫錯誤的最簡單方法是在eclipse中使用外部maven而不是運行時,你可以在Preferences - > Maven - > Installations中配置它。

0

「與tomcat7插件」

的tomcat7插件有SLF4J依賴。直到我將依賴項直接分配給tomcat7插件之前,我遇到了同樣的問題。

<pluginManagement> 
<plugins> 
    <plugin> 
     <groupId>org.apache.tomcat.maven</groupId> 
     <artifactId>tomcat7-maven-plugin</artifactId> 
     <version>2.2</version> 
     <dependencies> 
      <dependency> 
       <groupId>org.slf4j</groupId> 
       <artifactId>slf4j-simple</artifactId> 
       <version>1.7.5</version> 
      </dependency>      
     </dependencies> 
     <configuration> 
      <!-- ...snip... --> 
     </configuration> 
    </plugin> 
</plugins> 
</pluginManagement> 
-1

您可以將此添加到您的pom屬性中。

<org.slf4j-version>1.7.5</org.slf4j-version>