2012-02-22 1 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. $CLASSPATH 변수를 hbase-env.sh에 설정하지 않았습니다. Hadoop을 start-all.sh으로 실행 한 다음 start-hbase.sh으로 HBase를 시작합니다.

답변

12

${hase}/lib/에서 slf4j-log4j12-1.5.8.jar을 제거한 후 경고가 다시 표시되지 않았습니다. 중복 된 클래스가로드되어야하므로 hadoophbasejar과 동일하게 사용합니다 (jvm).

시도해 볼 수 있습니다.

+1

예, 덕분에 – Eric

+0

덕분에 나에게도 효과가있었습니다. 감사합니다. – Burhan

0

SLF4J에서 발생하는 경고는 바로 경고입니다. 다중 바인딩이 존재하는 경우에도 SLF4J는 하나의 로깅 프레임 워크/구현을 선택하고이를 바인딩합니다. SLF4J가 바인딩을 선택하는 방법은 JVM에 의해 결정되며 모든 실질적인 목적을 위해 무작위로 간주되어야합니다. 버전 1.6.6에서 SLF4J는 실제로 바인딩 된 프레임 워크/구현 클래스의 이름을 지정합니다.

라이브러리 또는 프레임 워크와 같은 임베디드 구성 요소는 SLF4J 바인딩에 대한 종속성을 선언해서는 안되며 slf4j-api에만 의존해야합니다. 라이브러리가 SLF4J 바인딩에 대한 컴파일 타임 종속성을 선언하면 최종 사용자에게 바인딩을 부과하므로 SLF4J의 목적이 무효화됩니다. SLF4J 바인딩에 대해 컴파일 타임 종속성을 선언하는 임베디드 구성 요소를 발견하면 해당 구성 요소/라이브러리의 작성자에게 문의하여 길을 수정 해 주시기 바랍니다.

+1

이것은 질문에 대한 대답이 아닙니다. OP는 경고를 없애는 방법을 알고 싶었습니다. – lokusking

+0

slf4j 항아리 중 하나를 지정한 경로에서 제거한 다음 경고 메시지가 표시되지 않습니다. – siva

관련 문제