2013-02-12 56 views
1

這或多或少是一個「常見」問題,但是,我還沒有設法找到一個好的答案呢。所以,再一次,這裏是警告:如何擺脫「類路徑包含多個SLF4J綁定」的警告?

SLF4J: Class path contains multiple SLF4J bindings. 
SLF4J: Found binding in [jar:file:/home/eualin/.m2/repository/org/slf4j/slf4j-jcl/1.6.0/slf4j-jcl-1.6.0.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: Found binding in [jar:file:/home/eualin/.m2/repository/org/slf4j/slf4j-log4j12/1.5.11/slf4j-log4j12-1.5.11.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. 

這裏是問題[1][2]兩種可能的解決方案。

假設他們都爲我工作,顯然,他們只是黑客,我不知道我是否應該依賴他們中的任何一個。你會推薦我什麼?請記住,在終端時不會出現此警告;只有當我通過IntelliJIDEA運行應用程序。

任何建議,非常感謝。

回答

3

SLF4J預計只有一個版本的StaticLoggerBinder存在於任何應用程序運行時。如果有多個,SLF4J不能保證將日誌消息路由到相應的記錄器。

SLF4J的體系結構要求只有一個庫用於路由日誌消息(例如slf4j-<logging framework>.jar)。當多個類路徑通過應用程序服務器,IDE,啓動腳本等進行播放時,SLF4J庫可以包含多次。您可能不得不尋找哪些classpath正在IntelliJIDEA中添加或修改(例如在配置的Java編譯器或任何啓動配置中)。

2

這可能是因爲IntelliJIDEA添加了其中一個slf4j綁定JAR本身。當你運行單元測試時,我的猜測正在發生。因此,一種方法會查看您是否可以在單元測試運行器的啓動程序配置中排除其他JAR。

但是在一天結束時,這個警告是無害的,你可以簡單地忽略它。

+0

不,我不是要運行這個應用程序單元測試;我只是試圖運行應用程序本身。最後,我可能會忽略它,我可以問你關於如何擺脫它的進一步想法,最好是完全不觸碰其他jar文件? – user706838 2013-02-18 15:56:54

+0

這顯然是一個運行時類路徑問題。您需要確保IntelliJIDEA在啓動應用程序時不會將兩個JAR放在類路徑中。我首先看看POM文件和它指定的依賴關係。 – 2013-02-18 23:05:56

0

在我的具體情況,我在IntelliJ IDEA得到這個錯誤,爽口搖籃固定此錯誤:

enter image description here

您可以從View..Tool Windows..Gradle找到這個窗口。

我們的設置是:

  • IntelliJ IDEA的V15
  • 搖籃
  • 詹金斯
  • SVN