2013年1月19日土曜日

備忘録:Cassandraクライアント実行時エラー(SLF4J: Class path contains multiple SLF4J bindings.)

CassandraのクライアントをThriftを利用して実装していると、実行時にこんなエラーが出た。
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/lib/hbase/lib/slf4j-log4j12-1.5.8.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/lib/hadoop-0.20/lib/slf4j-log4j12-1.4.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/apache-nutch-1.6/lib/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/apache-cassandra-1.2.0/lib/slf4j-log4j12-1.7.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.thrift.meta_data.FieldValueMetaData.(BZ)V
 at org.apache.cassandra.thrift.ColumnParent.(ColumnParent.java:128)
 at NutchCassandraData.(NutchCassandraData.java:66)
 at NutchCassandraData.main(NutchCassandraData.java:108)
原因は、エラーログの通り、複数のself4j-log4jがクラスパスに存在するため。
今回は、HBaseとHadoopのlibをクラスパスに通していた。これを外すことで解決。
Javaは勉強不足。コンパイル時になんとかなりそうな問題。

おわり

0 件のコメント:

コメントを投稿