2012-08-22 73 views
4

當我將SLF4J記錄器添加到我的代碼中時,出現一條錯誤消息:「類路徑包含多個SLF4J綁定」。在網站slf4j.org/codes上,它聲明我應該從類路徑中移除它們。但是,這兩個記錄器包含在我的maven依賴項中。我的整個maven依賴關係文件夾都包含在類路徑中。我並不負責進入Maven依賴關係的內容,因此它不是我編輯它的地方,所以它只在Maven依賴關係文件夾中有一個記錄器依賴關係。我可以指定Java程序,以便它只使用其中一個記錄器嗎?如何在有多個SLF4J綁定時使用SLF4J

EJAY

+0

你能後的堆棧跟蹤也?看起來這只是一個警告。 –

回答

1

弄清楚哪些項目的依賴是包括SLF4J實現,那麼排除:

<dependency> 
     <groupId>other-group</groupId> 
     <artifactId>dependency-id</artifactId> 
     <exclusions> 
      <exclusion> 
       <groupId>org.slf4j</groupId> 
            <!-- or slf4j-jdk14, etc --> 
       <artifactId>slf4j-simple</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
+0

謝謝大家的好評,但是我發現哪裏出了問題。這是我在Eclipse中設置的一些設置,它提供了警告。它基本上讀取pom.xml文件兩次,因此兩次調用slf4j實現,這就是爲什麼它給了我一個警告。這很有意義,因爲我的同事使用相同的pom.xml,他的記錄器工作正常。 –

+0

@Ejay很高興你解決它。您應該將其作爲答案發布,然後接受它。 – artbristol

0

如果你一定不能調整現有的Maven依賴關係來解決這個問題,你可以確保你的SLF4J在classpath中出現的結合首先,作爲第一個結合是一個變用於多個綁定的情況。

但是,您仍然會收到警告,但您的SLF4J記錄器將會被使用。

您也可以考慮利用maven模塊將項目分成多個部分,以便您可以在每個模塊的pom.xml文件中以不同方式管理每個部分中的依賴關係。