programing

SLF4J: 클래스 "org.slf4j.impl"을 로드하지 못했습니다.정적 LoggerBinder"입니다.오류

telecom 2023. 5. 25. 21:32
반응형

SLF4J: 클래스 "org.slf4j.impl"을 로드하지 못했습니다.정적 LoggerBinder"입니다.오류

  • Eclipse IDE(인디고, 주노 케플러(32비트 및 64비트 버전)에 대하여
  • 플랫폼:Windows, Ubuntu, Mac
  • m2e 버전: 1.1.0.2012030-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 종속성을 선언하지 않아도 메이븐 프로젝트에 나타납니다.

  • 뉴 메이븐 프로젝트--> 메이븐 아치타입-퀵스타트

    그리고.

  • 뉴 메이븐 프로젝트--> 원형 선택이 없는 단순 프로젝트

    의 결과.

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

테스트 환경 및 구성

Mac에서는 Eclipse Indigo 및 Eclipse Juno(32비트 및 64비트 모두), Ubuntu에서는 32비트, Windows에서는 64비트 및 32비트로 테스트되었습니다.Juno Classic, Juno Modeling Tools, Kepler Standard, Kepler Modeling Tools의 신규 설치를 테스트한 결과 동일한 오류가 발생했습니다.

이 오류는 치료, 설치, 테스트, 배포, 생성-소스 검증, 컴파일, 패키지, 통합-테스트, 확인 및 나머지 목표와의 조합과 함께 나타납니다.매개 변수 -e 및 -X도 함께 표시됩니다.m2e 저장소를 삭제하고 처음부터 다시 다운로드하려고 했지만 실패했습니다.위의 모든 시스템에서 3개의 서로 다른 기계와 가상 박스에서 테스트되었지만 동일한 오류가 발생했다고 언급해야 합니다.

slf4j-apilogback-core 종속성을 해결하는 다른 모든 로그백 구성(1.0.4 ~ 1.0.13)을 시도했지만 모두 동일한 오류를 생성합니다.

<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>

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

<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 설치 - 이클립스용 메이븐 통합

      • 주노 - http://download.eclipse.org/releases/juno
      • 케플러 - http://download.eclipse.org/releases/kepler
      • Indigo - http://download.eclipse.org/technology/m2e/releases/ (현재 사용 불가)

      OR

    • m2e 버전을 1.1.0.2012030-0009, 또는 1.2.0.20120903-1050, 또는 1.3.020130129-0926 또는 1.4.020130601-0317)로 업데이트합니다.


    • 만들기-을 클릭->선택하기->선택하기->선택하기->선택하기->선택하기->선택하기->>선택하기
      catalog->Finish 븐이카-archtype-탈에서빠른시작그마로침메침▁m>이->마▁from▁the.

      OR

    • 파일 선택->새로 만들기->기타->메이븐 프로젝트->다음 클릭->단순 프로젝트 생성(원형 건너뛰기 선택)->전체 아티팩트 정보->마무리

  • 프로젝트를 마우스 오른쪽 버튼으로 클릭 ->다른 이름으로 실행 -> 클린 설치(또는 위에서 언급한 다른 목표)

콘솔의 첫 번째 줄은 다음과 같습니다.

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.

추신: 기존 프로젝트에서 m2e 버전을 1.1.0.2012030-0009, 1.2.0.20120903-1050, 1.3.020130129-0926, 1.4.020130601-0317업데이트한 후 동일한 오류가 발생합니다.


업데이트

편집

m2e 지원 사이트:

  • 위의 질문은 m2e 지원 사이트에 버그로 게시되었고 이고르 페도렌코의 답변은

    이 메시지를 즉시 표시할 계획은 없습니다.

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


편집 2

  • 위의 오류 표시는 m2e 버전 1.2.0.20120903-1050에도 있습니다.


EDIT 3

  • 위의 오류 표시는 m2e 버전 1.3.0.20130129-0926에도 있습니다.


EDIT 4

  • 위의 오류 표시는 m2e 버전 1.4.0.20130601-0317에도 있습니다.


EDIT 5

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

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

해결 방법: 내장된 메이븐 대신 m2eclipse 내부의 외부 메이븐을 사용하는 것입니다.

이 작업은 3단계로 수행됩니다.

1 로컬 컴퓨터에 maven 설치(테스트 컴퓨터는 Ubuntu 10.10)

mvn --version

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

2 콘솔에서 메이븐을 실행하는 방법 외부 링크 실행

> 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] ------------------------------------------------------------------------
    [...]

내부 m2 모듈 3개: 임베디드 메이븐에서 로컬 메이븐으로 전환

  • 로컬 메이븐 홈 설치 DIR 위치 확인(mvn --version또는 구글을 사용하여MAVEN_HOME나에게 이것은 나를 도와주었다, 즉./usr/share/maven2)
  • eclipse Menu->Windows->환경설정->Maven->설치->에서 해당 문자열을 입력합니다.그렇다면 당신은 새로운 외부 메이븐으로 전환했어야 합니다.
  • 그런 다음 프로젝트를 "maven test"와 같이 실행합니다.

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

이 문제를 해결하기 위한 설명서가 SLF4J 사이트에 있습니다.저는 그것을 따라 이미 가지고 있던 slf4j-api-1.6.1.jar와 함께 애플리케이션에 slf4j-simple-1.6.1.jar를 추가했습니다.이것은 나의 문제를 해결했습니다.

slf4j

Gradle을 사용하는 경우 다음을 추가합니다.

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

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'

아웃코멘트 라인은 오류 출력을 유발한 라인입니다.메이븐으로 옮겨주시면 될 것 같습니다.

이 코드를 pom.xml 파일에 붙여넣습니다.저한테는 효과가 있어요.

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

메이븐 종속성 파일에 버전을 지정하지 않았기 때문에 최신 병을 선택하지 않을 수 있습니다.
그리고 당신은 또 다른 뎁의 친절함이 필요합니다.slf4j-log4j12아티팩트 ID입니다.
이것을 당신의 pom 파일에 포함합니다.

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

오류가 여전히 해결되지 않으면 알려줍니다.
도 이 링크를 보는 것을 추천합니다.

문제를 표면화하여 간과해 왔습니다.이것이 같은 문제로 여기에 온 다른 사람들에게 좋은 읽을거리가 될 것이라고 믿습니다.

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

저는 이클립스 루나에서 실행되는 스프링 부트 - 그래들 애플리케이션에 대해서도 비슷한 문제가 있었습니다.프로젝트의 .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"/>

아이디어는 이 해결책을 따르는 것입니다.그러나 구현 방법은 사례에 따라 다릅니다.한 가지 수정 방법은 위에서 사용한 것입니다.

이게 도움이 되길 바랍니다.

자바를 사용하여 카프카 제작자 프로그램을 작성할 때도 같은 문제가 있었습니다.이 오류는 잘못된 slf4j 라이브러리로 인해 발생합니다.아래 slf4j-maven 의존성을 사용하면 문제를 해결할 수 있습니다.

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

저도 같은 문제가 있었어요.이렇게 해서 해결했습니다.maven "sys.xml"은 maven입니다.을 다시 로드하여 코드를 실행합니다.
2 org.slf4jslf4j-nop 2.0.0-alpha5 파일

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>2.0.0-alpha5</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>2.0.0-alpha5</version>
    </dependency>`
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-nop</artifactId>
        <version>2.0.0-alpha5</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>2.0.0-alpha5</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>2.0.0-alpha5</version>
    </dependency>

이것은 오류 메시지가 아니라 경고입니다.그들의 웹사이트에는 다음과 같이 매우 명확하게 설명되어 있습니다.

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

제공자가 없는 경우 SLF4J는 기본적으로 NOP(무작동) 로거 제공자로 설정됩니다.

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

언급URL : https://stackoverflow.com/questions/11916706/slf4j-failed-to-load-class-org-slf4j-impl-staticloggerbinder-error

반응형