【问题标题】:HBase 0.92 warnings about SLF4J bindingsHBase 0.92 关于 SLF4J 绑定的警告
【发布时间】:2012-02-22 10:59:22
【问题描述】:

我在Hadoop 1.0.0 上安装了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

 .......

附:我没有在hbase-env.sh 中设置$CLASSPATH 变量。我用start-all.sh 运行Hadoop,然后用start-hbase.sh 启动HBase。

【问题讨论】:

    标签: hadoop hbase slf4j


    【解决方案1】:

    我删除了${hase}/lib/ 中的slf4j-log4j12-1.5.8.jar,然后警告不再显示。这应该是由于加载了重复的类,hadoophbase 在相同的jvm 中使用相同的jar

    你可以试一试。

    【讨论】:

      【解决方案2】:

      SLF4J 发出的警告就是这样,一个警告。即使存在多个绑定,SLF4J 也会选择一个日志框架/实现并与之绑定。 SLF4J 选择绑定的方式是由 JVM 决定的,并且出于所有实际目的应该被认为是随机的。从 1.6.6 版本开始,SLF4J 将命名它实际绑定到的框架/实现类。

      库或框架等嵌入式组件不应声明对任何 SLF4J 绑定的依赖,而应仅依赖 slf4j-api。当库声明对 SLF4J 绑定的编译时依赖项时,它将该绑定强加给最终用户,从而否定了 SLF4J 的目的。当您遇到一个嵌入式组件声明对任何 SLF4J 绑定的编译时依赖项时,请花时间联系该组件/库的作者,并请他们改正他们的方式。

      【讨论】:

      • 这不是问题的答案。 OP想知道,如何摆脱警告
      • 从指定路径中删除一个 slf4j jar 然后你不会收到警告
      • 用户有什么可以做的吗?用户通常没有管理员权限从公司常见的服务器环境中的路径中删除 jar。
      猜你喜欢
      • 1970-01-01
      • 2011-11-26
      • 2021-05-19
      • 2013-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-15
      • 2019-11-06
      相关资源
      最近更新 更多