2012-02-22 65 views
4

我在Hadoop 1.0.0上安裝了HBase 0.92,它在全分佈模式下工作正常,但一個煩人的警告不斷出現。我怎樣才能擺脫它?關於SLF4J綁定的HBase 0.92警告

....... 
hbase(main):001:0> status 
SLF4J: Class path contains multiple SLF4J bindings. 

SLF4J: Found binding in 
[jar:file:/opt/hbase-0.92.0/lib/slf4j-log4j12-1.5.8.jar!/org/slf4j/impl/StaticLoggerBinder.class] 

SLF4J: Found binding in 
[jar:file:/opt/hadoop-1.0.0/lib/slf4j-log4j12-1.4.3.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
: See http://www.slf4j.org/codes.html#multiple_bindings for an 
explanation. 

3 servers, 0 dead, 0.6667 average load 

....... 

P.S.我沒有在hbase-env.sh中設置$CLASSPATH變量。我用start-all.sh運行Hadoop,然後用start-hbase.sh啓動HBase。

回答

12

我刪除了${hase}/lib/slf4j-log4j12-1.5.8.jar然後警告從來沒有再次出現。這應該是由於加載了重複的類,hadoophbase在相同的jvm中使用相同的jar

你可以試試看。

+1

是的,它的工作,謝謝 – Eric 2012-08-01 01:07:01

+0

它爲我工作,謝謝。 – Burhan 2014-10-14 11:25:12

0

SLF4J發出的警告就是這個警告。即使存在多個綁定,SLF4J也會選擇一個日誌框架/實現並綁定它。 SLF4J選擇綁定的方式由JVM確定,並且對於所有實際目的應視爲隨機。從版本1.6.6開始,SLF4J將命名它實際綁定的框架/實現類。

嵌入式組件,如庫或框架不應當聲明的任何SLF4J依賴性結合,但僅依靠SLF4J-API。當庫聲明對SLF4J綁定的編譯時依賴性時,它會將該綁定強加給最終用戶,從而否定SLF4J的目的。當您遇到嵌入式組件,聲明對任何SLF4J綁定的編譯時間依賴性時,請花時間聯繫該組件/庫的作者,並請他們修補它們的方式。

+1

這不是問題的答案。 OP想知道,如何擺脫警告 – lokusking 2016-07-01 09:58:35

+0

從指定的路徑中刪除一個slf4j罐然後你不會得到警告 – siva 2016-07-02 05:03:57