2012-02-22 10 views
4

HBase 0.92Hadoop 1.0.0にインストールしましたが、完全分散モードで正常に動作しますが、迷惑な警告が表示され続けます。どうすればそれを取り除くことができますか?HBase 0.92 SLF4Jバインディングに関する警告

....... 
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. $CLASSPATH変数をhbase-env.shに設定しませんでした。私はstart-all.shでHadoopを実行し、start-hbase.shでHBaseを起動します。

答えて

12

slf4j-log4j12-1.5.8.jar${hase}/lib/に削除しましたが、警告は再び表示されませんでした。重複したクラスがロードされているため、hadoophbaseは同じjarを同じjvmに使用します。

あなたはそれを試すことができます。

+1

はい、それは働いてくれてありがとう – Eric

+0

それも私のために働いた、ありがとう。 – Burhan

0

SLF4Jが発行する警告は、警告です。複数のバインディングが存在する場合でも、SLF4Jは1つのロギングフレームワーク/実装を選択し、それをバインドします。 SLF4Jがバインディングを選択する方法は、JVMによって決定され、すべての実際的な目的のためにランダムと見なすべきです。バージョン1.6.6以降、SLF4Jは実際にバインドされているフレームワーク/実装クラスの名前を付けます。

ライブラリやフレームワークなどの組み込みコンポーネントは、SLF4Jバインディングに依存関係を宣言すべきではなく、slf4j-apiのみに依存する必要があります。ライブラリがSLF4Jバインディングにコンパイル時の依存関係を宣言すると、そのバインディングがエンドユーザに強制され、SLF4Jの目的が無効になります。 SLF4Jバインディングにコンパイル時の依存関係があると宣言されている組み込みコンポーネントを見つけたら、そのコンポーネント/ライブラリの作者に連絡して、その方法を教えてください。

+1

これは質問に対する答えではありません。 OPが知りたい、警告を取り除く方法 – lokusking

+0

指定されたパスからslf4j jarを削除して警告を表示しない – siva

関連する問題