SLF4J :“org.slf4j.impl.StaticLoggerBinder”클래스를로드하지 못했습니다. 오류


115
  • Eclipse IDE 관련 ( Indigo , JunoKepler (32 및 64 비트 버전))
  • 플랫폼 : Windows , Ubuntu , Mac
  • m2e 버전 : 1.1.0.20120530-0009 , 1.2.0.20120903-1050 , 1.3.0.20130129-0926 ,
    1.4.0.20130601-0317

일반 정보

위의 오류는 m2e를 버전 1.1로 업데이트 한 후 발생했습니다. m2e 1.1을 제거하고 m2e 1.0으로 롤백하면 모든 것이 잘 작동했습니다. Windows와 Ubuntu에서 문제를 반복하려고 시도했지만 똑같은 오류가 발생했습니다. slf4j-api 및 logback의 수많은 구성이 테스트되었지만 작동하지 않는 것 같습니다.

오류는 slf4j 종속성을 선언하지 않고도 모든 maven 프로젝트에 나타납니다 .

  • 새로운 Maven 프로젝트-> maven-archetype-quickstart

  • New Maven Project-> 아키 타입 선택이없는 간단한 프로젝트

    결과

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".

환경 및 구성 테스트

Mac에서 Eclipse Indigo 및 Eclipse Juno (32 비트 및 64 비트 모두), Ubuntu에서 32 비트, Windows에서 64 비트 및 32 비트로 테스트되었습니다. Juno Classic , Juno 모델링 도구 , Kepler Standard , Kepler 모델링 도구 의 새로 설치를 테스트 했으며 동일한 오류가 발생했습니다.

이 오류는 clean , install , test , deploy , generate-sources , validate , compile , package , integration-test , verify 및 goal clean과 나머지 목표의 조합으로 나타납니다. 매개 변수 -e-X 와 함께 나타납니다 . m2e 저장소를 삭제하고 처음부터 다운로드하려고 시도했지만 성공하지 못했습니다. 위의 모든 시스템에서 3 개의 다른 컴퓨터와 가상 상자에서 테스트되었지만 동일한 오류가 발생했다고 언급해야합니다.

모든 다른 로그 백을 시도했습니다. 그 해결 (1.0.4에서 1.0.13로) 구성 SLF4J-APIlogback 코어 의존하지만, 모든 생산 같은 오류 :

<dependency>
   <groupId>ch.qos.logback</groupId>
   <artifactId>logback-classic</artifactId>
   <version></version>
</dependency>

모든 다른 (1.6.1에서 1.7.5) slf4j-simple 구성 을 시도했습니다 .

<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-simple</artifactId>
   <version></version>
   <scope>compile</scope>
</dependency>

모두 다른 시도 (1.6.1에서 1.7.5) log4j-over-slf4j 구성을 시도했습니다 .

<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>log4j-over-slf4j</artifactId>
   <version></version>
   <scope>compile</scope>
</dependency>

모두 다른 시도 (1.6.1에서 1.7.5) slf4j-jdk14 구성 .

<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-jdk14</artifactId>
   <version></version>
   <scope>compile</scope>
</dependency>

모두 다른 시도 (1.6.1에서 1.7.5) slf4j-log4j12 구성 .

<dependency>
     <groupId>org.slf4j</groupId>
     <artifactId>slf4j-log4j12</artifactId>
     <version></version>
     <scope>compile</scope>
</dependency>

시도 slf4j-nop 1.7.5 구성을 했습니다 .

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-nop</artifactId>
  <version>1.7.5</version>
  <scope>compile</scope>
</dependency>

마지막으로 오류에도 불구하고 로그가 저장되고 인쇄됩니다.


오류를 재현하는 방법

  • Eclipse Juno, Indigo 또는 Kepler 32 또는 64 비트를 다운로드하십시오 (모든 설치에서 동일한 오류가 발생 함).

    • m2e 설치-Eclipse 용 Maven 통합

      또는

    • m2e 버전을 1.1.0.20120530-0009 또는 1.2.0.20120903-1050 또는 1.3.0.20130129-0926 또는 1.4.0.20130601-0317로 업데이트 )


    • 파일-> 새로 만들기-> 기타-> Maven 프로젝트-> 다음 클릭-> 카탈로그에서
      maven-archetype-quickstart 선택 -> 마침을 선택합니다.

      또는

    • 파일-> 새로 만들기-> 기타-> Maven 프로젝트-> 다음 클릭-> 간단한 프로젝트 만들기 (아키 타입 선택 건너 뛰기)-> 완성 아티팩트 정보-> 마침을 선택합니다.

  • 프로젝트-> 다음으로 실행-> 새로 설치 (또는 위에서 언급 한 다른 목표)를 마우스 오른쪽 단추로 클릭하십시오.

콘솔의 첫 번째 줄은

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

PS 기존 프로젝트에서 m2e 버전을 1.1.0.20120530-0009 , 1.2.0.20120903-1050 , 1.3.0.20130129-0926 , 1.4.0.20130601-0317로 업데이트 한 후 동일한 오류가 발생합니다.


업데이트

편집하다

m2e 지원 사이트 :

  • 위의 질문은 m2e 지원 사이트에 버그로 게시되었으며 Igor Fedorenko의 답변은

    이 메시지를 억제 할 즉각적인 계획은 없습니다.

    위의 버그를 보려면 m2e 공식 지원 사이트 를 참조하십시오.


2 편집

  • 상기 에러 표시는 현재 에도 m2e의 버전 1.2.0.20120903-1050


3 편집

  • 상기 에러 표시는 현재 에도 m2e의 버전 1.3.0.20130129-0926


4 편집

  • 상기 에러 표시는 현재 에도 m2e의 버전 1.4.0.20130601-0317


5 편집

                              ***Reported FIXED***
  • 위 오류는 m2e 버전 1.5.0 / Luna M3 ( Target Milestone )에서 수정 된 것으로보고됩니다 . 이 버전은 아직 다운로드 할 수 없습니다.
  • Luna M3 11 월 15 일로 예정되어 있습니다.
  • 최신 개발 빌드는 여기에서 사용할 수 있습니다.
  • m2e 이정표에 대한 자세한 정보는 m2e 기본 저장소 에서 찾을 수 있습니다 .

@EliranMalka 길지만 이유가 있습니다. 사람들이 같은 질문을하지 않도록 돕고 같은 문제에 직면하고 있는지 이해하기 위해 필요한 모든 세부 사항을 포함 시키려고 노력했지만 너무 많은 선택을 할 수 없었습니다. :-)
Konstantinos Margaritis

neo4j와 함께 사용하기 스프링 데이터를하는 동안 나는 내가 가지고있는이 오류가 발생했습니다 slf4j모두 slf4j-api-1.7.7jcl-over-slf4j-1.7.7내가 그 사람을 제거하려고하면 내가 그들의 없다는 오류 메시지가 Logger클래스가 없습니다. 어떻게해야합니까?
user1885868

@KonstantinosMargaritis pom.xml로이 문제를 해결하는 방법을 알려주시겠습니까? 로컬 설정에서 작동하도록 할 수는 있지만 젠킨스에서는 항상 실패합니다.
vikramvi

현재 설정 @vikramvi는 무엇입니까?
Konstantinos Margaritis

@KonstantinosMargaritis는 이것에 대해 돌아와 주셔서 감사합니다. 나는 maven이 최신 버전으로 업그레이드 된 Linux에서 3.0 버전임을 깨달았고 다시 시도했습니다. 이 문제가 해결되었습니다. 그러나 무엇이 잘못되었는지 알아 내기 위해 하루 종일을 보내야했습니다. 어쨌든 고마워.
vikramvi

답변:


75

이 오류도 확인할 수 있습니다.

해결 방법 : 외부 maven 을 사용하는 것입니다. 내장 된 maven 대신 m2eclipse 내부에서 것입니다.

이는 세 단계로 수행됩니다.

1 로컬 머신에 maven을 설치합니다 (테스트 머신은 Ubuntu 10.10 임).

mvn-버전

Apache Maven 2.2.1 (rdebian-4) Java 버전 : 1.6.0_20 Java 홈 : / usr / lib / jvm / java-6-openjdk / jre 기본 로케일 : de_DE, 플랫폼 인코딩 : UTF-8 OS 이름 : "linux" 버전 : "2.6.35-32-generic"아치 : "amd64"제품군 : "unix"

2 외부 에서 Maven 실행 콘솔에서 Maven 실행 방법 연결

> cd path-to-pom.xml
> mvn test
    [INFO] Scanning for projects...
    [INFO] ------------------------------------------------------------------------
    [INFO] Building Simple
    [INFO]    task-segment: [test]
    [INFO] ------------------------------------------------------------------------
    [...]
    [INFO] Surefire report directory: [...]/workspace/Simple/target/surefire-reports
    
    -------------------------------------------------------
     T E S T S
    -------------------------------------------------------
    Running net.tverrbjelke.experiment.MainAppTest
    Hello World
    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.042 sec
    
    Results :
    
    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
    
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESSFUL
    [INFO] ------------------------------------------------------------------------
    [...]

(3) 내부의 m2eclipse에 : 전환 매립 받는다는 지역을 받는다는

  • 지역 받는다는 가정 설치 디렉토리가 어디 있는지 (알아 mvn --version, 나에 대한 구글 MAVEN_HOME나를 위해, 이 절 도와 줬어요 입니다/usr/share/maven2 )
  • 이클립스 메뉴-> 창-> 환경 설정-> 메이븐-> 설치-> 해당 문자열을 입력하십시오. 그런 다음 새로운 외부 전문가로 전환해야합니다.
  • 그런 다음 "maven test"와 같이 프로젝트를 실행하십시오.

오류 메시지가 사라져야합니다.


1
성가신 오류를 우회하기위한 유일한 해결 방법이므로 귀하의 답변을 수락하고 있습니다. 분석적 답변에 감사드립니다. :) ..
Konstantinos Margaritis 2011

3
흠 나는 Windows에 있고 새로운 외부 설치로 변경되었지만 오류가 여전히 존재합니다!?
stefan.at.wpf 2013 년

4
죄송합니다. 작동합니다. 실행 구성에는 Maven 런타임 (내부 / 외부)에 대한 옵션이 있습니다. 따라서 저장된 것을 사용하는 경우 업데이트해야합니다.
stefan.at.wpf 2013 년

@ stefan.at.wpf 작동한다는 소식을 들으니 반갑습니다. 원하는 경우 버그의 메일 링리스트에 가입하고 변경 사항이있을 경우 알림을받을 수 있습니다.
Konstantinos Margaritis

2
나에게는 #mvn --versionMAVEN_HOME을 보여주는 것이 편리합니다.
biaobiaoqi 2013

25

SLf4J 사이트에는이 문제를 해결하기위한 문서가 있습니다. 나는 그것을 따랐고 이미 가지고 있던 slf4j-api-1.6.1.jar와 함께 slf4j-simple-1.6.1.jar을 내 응용 프로그램에 추가했습니다.

slf4j


4
이것은 maven에서 다음을 추가 할 수 있습니다. <dependency> <groupId> org.slf4j </ groupId> <artifactId> slf4j-simple </ artifactId> <version> 1.XX </ version> </ dependency> // 현재 버전
Enrique San Martín 2014 년

@Mohammed Irfan이 이클립스의 libs 폴더 에이 twojar을 추가해야 할 수도 있습니까?
Erum

1
나는 메이븐의 최신 버전을 사용하고 위의 단계를 수행했지만,이 문제가 멀리 팀인 대답했다 - 감사합니다 :)
롭 윌슨

15

Gradle을 사용하는 경우 다음을 추가하십시오.

dependencies { 
... 
compile "org.slf4j:slf4j-simple:1.7.9" 
... 
}

여기 Gradle과 함께 작동합니다! 라이브러리를 추가하면 어떻게되는지 설명해 주시겠습니까?
Felipe Pereira

5

Gradle과 동일한 결과로 유사한 오류가 발생했으며 다음과 같이 해결할 수있었습니다.

//compile 'org.slf4j:slf4j-api:1.7.1'
compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.1'
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.1'
compile group: 'org.apache.logging.log4j', name: 'log4j-slf4j-impl', version: '2.1'

주석 처리 된 줄은 오류 출력을 일으킨 줄입니다. 나는 이것을 Maven으로 전송할 수 있다고 믿습니다.


3

maven 종속성 파일에 버전을 지정하지 않았기 때문에 최신 jar를 선택하지 않을 수 있으며 아티팩트 ID
가있는 또 다른 종속성 이 필요합니다 slf4j-log4j12.
이것을 pom 파일에 포함하십시오.

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.5.6</version>
</dependency>

오류가 여전히 해결되지 않으면 알려주세요.
또한 이 링크 를 볼 것을 권장합니다.


3
명시된 모든 버전이 확인되었습니다. 나는 반복을 피하기 위해 그것을 선언하지 않았습니다. 태그가 의도적으로 비워졌습니다. 위의 문제는 m2e 지원 사이트에 버그로 게시되었으며, m2e 개발자가 압도하지 않는 한 위의 오류를 해결할 방법이 없습니다. 웹 사이트를 여러 번 읽었으며 문제를 해결할 수있는 가능한 모든 라이브러리를 포함했습니다. 불행히도 선언 된 종속성이 아닌 m2e와 관련이 있기 때문에 구성이 작동하지 않았습니다. 위의 오류는 Maven 콘솔 또는 Netbeans. Eclipse에서만 표시되지 않습니다.
Konstantinos Margaritis

1
slf4j-log4j12는 slf4j-simple, slf4j-jdk14 및 logback-classic과 함께 또 다른 바인딩입니다. 위의 종속성 중 하나로 바인딩 문제가 해결되었을 것입니다. 앞서 설명했듯이 문제는 m2e에 있습니다. 어쨌든 감사합니다.
Konstantinos Margaritis

3

이 코드를 pom.xml 파일에 붙여 넣습니다. 그것은 나를 위해 작동합니다.

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.6.1</version>
    <scope>test</scope>
</dependency>

"org.slf4j.impl.StaticLoggerBinder"오류를 해결하지만 이제는 모든 것을 로깅하고 src / test / resources에 log4j.xml 및 log4j.properties (한 번에 하나씩)를 넣습니다. 이제 프로젝트의 모든 프레임 워크가 로깅됩니다. 내 자신의 로깅을 제외한 수많은 메시지.
OJVM

1

문제가 드러나는 것을 살펴 보았습니다. 같은 문제로 여기에 오는 다른 사람들에게도이 글이 좋은 읽을 거리가 될 것이라고 믿으십시오.

https://bugs.eclipse.org/bugs/show_bug.cgi?id=387064


링크가 아닌 전체 답변을 제공해주세요.
slfan

@Prince 질문 설명을 읽으시면 "위의 버그를 보려면 m2e 공식 지원 사이트를 참조하십시오"라는 부분을 찾을 수 있습니다.이 부분은 귀하가 언급 한 URL을 가리 킵니다.
Konstantinos Margaritis

죄송합니다 .. 내 잘못입니다. 정중 한 사과!
왕자

1

Eclipse Luna에서 실행되는 Spring Boot-Gradle 애플리케이션에 대해 비슷한 문제가 발생했습니다. 내 프로젝트의 .classpath에 항목을 수동으로 추가하여 해결할 수 있습니다.

<classpathentry sourcepath="C:/Users/<username>/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-simple/1.7.7/3150039466ad03e6ef1c7ec1c2cbb0d96710cf64/slf4j-simple-1.7.7-sources.jar" kind="lib" path="C:/Users/<username>/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-simple/1.7.7/8095d0b9f7e0a9cd79a663c740e0f8fb31d0e2c8/slf4j-simple-1.7.7.jar"/>

아이디어는 따르는 것입니다 이것을 것입니다 솔루션 입니다. 그러나 구현 방법은 사례에 따라 다릅니다. 고정 방법 중 하나는 위에서 사용한 방법입니다.

도움이 되었기를 바랍니다.


0

이것은 오류 메시지가 아니라 경고입니다. 웹 사이트에서 다음과 같이 매우 명확하게 설명됩니다.

이 경고, 즉 오류가 아닌 메시지는 클래스 경로에서 SLF4J 공급자를 찾을 수 없을 때보고됩니다. slf4j-nop.jar slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar 또는 logback-classic.jar 중 하나만 (하나만) 클래스 경로에 배치하면 문제가 해결됩니다. 이러한 공급자는 slf4j-api 1.8 이상을 대상으로해야합니다.

공급자가없는 경우 SLF4J는 기본적으로 NOP (no-operation) 로거 공급자로 설정됩니다.

https://www.slf4j.org/codes.html#StaticLoggerBinder


0

Java를 사용하여 Kafka 생산자 프로그램을 작성할 때 동일한 문제가 발생했습니다. 이 오류는 잘못된 slf4j 라이브러리로 인해 발생합니다. 문제를 해결할 slf4j-simple maven 종속성 아래를 사용하십시오.

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.6.1</version>
    <scope>test</scope>
</dependency>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.