2012-06-19 2 views
0

명령 줄에서 SLFj4 로거 (LoggerFactory.getLogger (myClass.class))를 사용하는 프로그램을 실행할 때마다 NoSuchMethodError .Eclipse 외부에서 프로그램을 실행할 때 NoSuchMethodError (org.slf4j.LoggerFactory.getLogger)

Exception in thread "main" java.lang.NoSuchMethodError: 
    org.slf4j.LoggerFactory.getLogger(Ljava/lang/Class;)Lorg/slf4j/Logger; 

재미있는 점은 이클립스에서 동일한 프로그램을 실행할 때이 오류가 발생하지 않는다는 것입니다. 코드를 컴파일 할 때 오류가 없습니다. 그리고 메소드 getLogger은 클래스 패스의 해당 클래스 파일에 확실히 존재합니다.

SLF4j API 및 바인딩의 최신 버전을 사용해 보았지만 오류가 여전히 존재합니다. 모든 관련 클래스를 클래스 경로에 추가했습니다 (ClassNotFoundExceptions이 없음).

어떻게해야합니까? 어떤 추가 정보가 필요합니까?

미리 감사드립니다.

+0

그것은 maven 또는 ant 프로젝트입니까? –

+0

내가 원하는 작은 프로그램이있는 프로젝트는 빌드 도구가없는 간단한 Java 프로젝트입니다. 그러나 Maven을 사용하는 프로젝트의 일부 클래스를 사용합니다. –

+1

내 문제에 대한 간단한 해결 방법을 찾았습니다. Class 매개 변수 변형을 대체하는 경우 LoggerFactory.getLogger (clazz); 문자열 매개 변수 변형 LoggerFactory.getLogger (clazz.getName()); 모든 것이 정상적으로 작동합니다. 그러나 여전히 질문은 : 왜? 이 행동에 대한 설명을 듣게되어 기쁩니다. –

답변

1

SLF4j를 포함한 두 가지 종속성을 사용해야하며 종속성에서 제외하고 다시 시도하십시오.

또한 동일한 버전을 사용하고 있는지 확인하십시오.