2012-02-22 36 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