programing

SLF4J: "org.slf4j.impl" 클래스를 로드하지 못했습니다.Static Logger Binder"

goodsources 2022. 7. 11. 21:32
반응형

SLF4J: "org.slf4j.impl" 클래스를 로드하지 못했습니다.Static Logger Binder"

이 애플리케이션은 tcServer와 WebSphere 6.1 모두에 배포될 예정입니다.이 응용 프로그램은 ehCache를 사용하기 때문에 종속성으로 slf4j가 필요합니다.그 결과 slf4j-api.jar(1.6) jar를 전쟁 파일 번들에 추가했습니다.

애플리케이션은 tcServer에서 다음 오류를 제외하고 정상적으로 동작합니다.

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.

하면 WebSphere를 취득할 수중에 WebSphere가 됩니다.java.lang.NoClassDefFoundError: org.slf4j.impl.StaticLoggerBinder.

, 「 」가 되어 있습니다.Failed to load class "org.slf4j.impl.StaticMDCBinder"

두 응용 프로그램 서버의 클래스 경로를 확인했는데 다른 slf4j jar는 없습니다.

여기서 무슨 일이 일어나고 있는지 아는 사람 있나요?

WebSphere 6.1에서도 동일한 문제가 발생했습니다.Ceki가 지적했듯이 WebSphere에서 사용하고 있는 수많은 항아리 중 하나는 이전 버전의 slf4j를 가리키고 있었습니다.

No-Op 폴백은 slf4j-1.6+에서만 발생하므로 그보다 오래된 폴백은 예외가 발생하여 도입이 중단됩니다.

이 문제를 해결하는 문서가 SLf4J 사이트에 있습니다.나는 그것을 따라하며 덧붙였다.slf4j-simple-1.6.1.jarslf4j-api-1.6.1.jar이미 먹어본 적이 있어요.

Maven을 하여 다음과 합니다.${slf4j.version}slf4j의 최신 버전이다

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>${slf4j.version}</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>${slf4j.version}</version>
</dependency>

이것으로 내 문제는 해결되었다.

구글 검색에서 오신 분들을 위한 거예요.

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

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

또는

   <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
       <version>1.7.5</version>
   </dependency>
   <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-simple</artifactId>
       <version>1.6.4</version>
   </dependency>

이것을 pom.xml에 추가하기만 하면 됩니다.

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

여기에서는 slf4j-simple 의존관계를 maven pom 파일에 추가할 것을 권장합니다.최신 버전을 확인하는 것이 좋습니다.

SLF4J Simple Binding의 최신 버전은 https://mvnrepository.com/artifact/org.slf4j/slf4j-simple에서 확인할 수 있습니다.사용자에게 가장 적합한 버전을 선택하여 2021-10년 현재 안정된 버전인 경우 2021-07년 1.7.32를 선택하여 pom.xml에 포함합니다.

사용자의 편의를 위해 여기에 일부 종속성이 표시되어 있지만, 이 내용을 읽으면 최신 상태가 아닐 수 있습니다.

2021-08 Alpha 버전

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-simple</artifactId>
   <version>2.0.0-alpha5</version>
 </dependency>

2019년 2월 베타 버전

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.8.0-beta4</version>
</dependency>

안정판 2021-07

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-simple</artifactId>
   <version>1.7.32</version>
</dependency>

아래 코멘트 덕분에 스코프 테스트 부분을 삭제했습니다.

패스에 .slf4j-simple-1.6.2.jar만약 없다면 다운로드 해주세요.http://www.slf4j.org/codes.html#multiple_bindings 를 참조해 주세요.

을 볼 수 것이다.SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

이 문제는 클래스 경로에서 적절한 SLF4J 바인딩을 찾을 수 없는 경우에 발생합니다.

이 경고가 발생하는 이유를 검색할 수 있습니다.
1개 추가*slf4j-nop.jar,slf4j-simple.jar,slf4j-log4j12.jar,slf4j-jdk14.jar ★★★★★★★★★★★★★★★★★」logback-classic.jar*문제를 해결할 수 있습니다.

compile "org.slf4j:slf4j-simple:1.6.1"

, 위의 를 자신의 코드에 합니다.build.gradle인 「Code」를 참조해 주세요.pom.xml이치노

나도 같은 오류에 직면해 있었다.slf4j-api, slf4j-log4j12, log4ji는 log4j이다.은 모두 「」를 있었습니다.<scope>test</scope>이걸 제거했을 때는 다 괜찮았어.

가끔 어리석은 실수로 머리가 깨진다;)

file 기줄slf4j-log4j12-1.6.4.jar효과가 있을 거야

SLF4j는 다양한 로깅 프레임워크의 추상화입니다.따라서 slf4j를 사용하는 것 외에 log4j나 logback 등의 로깅 프레임워크를 클래스 경로에 포함해야 합니다.
아이디어를 얻으려면 http://logback.qos.ch/manual/introduction.html의 First Baby Step을 참조하십시오.

종속성 관리에 maven을 사용하는 경우 pom.xml에 다음 종속성을 추가할 수 있습니다.

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

Maven 이외의 사용자용 라이브러리를 다운로드하여 프로젝트 클래스 경로에 저장하기만 하면 됩니다.

상세한 것에 대하여는, http://www.mkyong.com/wicket/java-lang-classnotfoundexception-org-slf4j-impl-staticloggerbinder/ 를 참조해 주세요.

다음 오류가 발생했을 때 이 문제가 발생하였습니다.

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.

했을 때slf4j-api-1.7.5.jar 집에서는libs.

영감님, 제가 추천한 보약통으로 해봤는데slf4j-log4j12-1.7.5.jar,slf4j-simple-1.7.5이치노내가 추가했을 때 문제는 마침내 해결되었다.slf4j-jdk14-1.7.5.jar자바립스

slf4j 패키지 전체는 http://www.slf4j.org/download.html에서 구할 수 있습니다.

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

위의 의존관계를 pom.xml 파일에 저장합니다.

Slf4j는 log4j, logback, java.util.logging 등의 기본 로깅 프레임워크의 외관입니다.

기본 프레임워크와 연결하기 위해 slf4j는 바인딩을 사용합니다.

  • log4j - slf4j-log4j12-1.7.21.jar
  • java.dev.java - slf4j-jdk14-1.7.21.jar 등

바인딩 jar가 누락되면 위의 오류가 발생합니다.이 항아리를 다운로드하여 클래스 경로에 추가할 수 있습니다.

메이브 의존의 경우,

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

이 의존관계는 slf4j-log4j12-1.7.21.jar와 더불어 slf4j-api-1.7.21.jar와 log4j-1.2.17.jar를 프로젝트에 가져옵니다.

참고 자료: http://www.slf4j.org/manual.html

이 문제를 해결하려면 다음 종속성을 pom에 추가하십시오.

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

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>1.7.25</version>
</dependency>

Java 9 라이브러리를 사용하는 Spring-boot-2 어플리케이션에서도 같은 문제가 있었습니다.

pom.xml에 다음 의존관계를 추가하면 문제가 해결되었습니다.

    <dependency>
        <groupId>com.googlecode.slf4j-maven-plugin-log</groupId>
        <artifactId>slf4j-maven-plugin-log</artifactId>
        <version>1.0.0</version>
    </dependency>

항아리 포함 및 순수 메이븐 솔루션의 대안으로 그래들이 있는 메이븐에서 포함할 수 있습니다.

「」의 예1.7.25

// https://mvnrepository.com/artifact/org.slf4j/slf4j-simple
api group: 'org.slf4j', name: 'slf4j-simple', version: '1.7.25'

을 자신의 의존 에 넣으세요.build.gradlefilename을 클릭합니다.

Web스피어에서는 이전 버전의 slf4j-api.jar, 1.4.x 또는 1.5.x가 어딘가에 놓여 있습니다.tcServer에서 볼 수 있는 동작(NOP로의 페일오버)은 slf4j 버전 1.6.0 이상에서 발생합니다.모든 플랫폼에서 slf4j-api-1.6.x.jar를 사용하고 있으며 클래스 경로에 이전 버전의 slf4j-api가 배치되어 있지 않은지 확인합니다.

Struts2+Spring(스프링)합니다.slf4j-api-1.7.5.jar.

프로젝트를 실행하면 다음과 같은 오류가 발생합니다.

"org.slf4j.impl" 클래스를 로드하지 못했습니다.Static Logger Binder"

는 이제 the the the 하여 문제를 했다.slf4j-log4j12-1.7.5.jar.

그러니 이 병을 프로젝트에 추가하여 문제를 해결하십시오.

SLF4J 매뉴얼에 기재된 바와 같이

Simple Logging Passide for Java(SLF4J)는 java.util.logging, logback, log4j 등 다양한 로깅 프레임워크의 단순한 외관 또는 추상화 역할을 합니다.

그리고.

클래스 경로에 바인딩을 추가하는 즉시 경고가 사라집니다.

따라서 사용할 바인딩을 선택해야 합니다.

NoOp 바인딩(slf4j-nop)

NOP용 바인딩, 모든 로깅을 자동으로 폐기합니다.

https://search.maven.org/search?q=g:org.slf4j%20AND%20a:slf4j-nop&core=gav에서 최신 버전을 확인하십시오.

간이 바인딩(slf4j-simple)

는 모든 이벤트를 System.err로 출력합니다.INFO 이상의 메시지만 출력됩니다.이 바인딩은 소규모 응용 프로그램에서 유용합니다.

https://search.maven.org/search?q=g:org.slf4j%20AND%20a:slf4j-simple&core=gav에서 최신 버전을 확인하십시오.

로깅 프레임워크 바인딩(java.util.logging, logback, log4j)

파일에 로그를 쓰려면 이러한 바인딩 중 하나가 필요합니다.

https://www.slf4j.org/manual.html#projectDep 에서 설명과 순서를 참조해 주세요.


내 의견

log4j 프로젝트의 후속 제품이기 때문에 Logback을 추천합니다.

https://search.maven.org/search?q=g:ch.qos.logback%20AND%20a:logback-classic&core=gav 에서 바인딩의 최신 버전을 확인합니다.

은 개봉 후 에 기록되어야 할 " " " 를 해 주세요.FileAppender의 설정src/main/resources/logback.xml ★★★★src/test/resources/logback-test.xml을 사용하다

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!-- encoders are assigned the type
             ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>logs/logs.log</file>

        <encoder>
            <pattern>%date %level [%thread] %logger{10} - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="debug">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </root>

    <logger level="DEBUG" name="com.myapp"/>
</configuration>

(매뉴얼 상세설명 참조:https://logback.qos.ch/manual/configuration.html)

이는 동일한 버전을 사용하여 해결할 수 있습니다.나는 이것을 시도해보고 해결했다.

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

이 문제를 해결하기 위해 다음 종속성을 추가했습니다.

https://mvnrepository.com/artifact/org.slf4j/slf4j-simple/1.7.25

payara 5.191에서도 같은 문제가 발생하였습니다.

jcl-over-slf4j와 slf4j12가 함께 문제를 해결했습니다.

<properties>
  <slf4j.version>1.7.29</slf4j.version>
</properties>

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>${slf4j.version}</version>
  <type>jar</type>
</dependency> 

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>jcl-over-slf4j</artifactId>
  <version>${slf4j.version}</version>
</dependency>        

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
  <version>${slf4j.version}</version>
</dependency>

SLF4J 공식 문서에 따라

클래스 org.slf4j.impl을 로드하지 못했습니다.Static Logger Binder

이 경고 메시지는 org.slf4j.impl이 되면 보고됩니다.StaticLoggerBinder 클래스를 메모리에 로드할 수 없습니다.이 문제는 클래스 경로에서 적절한 SLF4J 바인딩을 찾을 수 없는 경우에 발생합니다.클래스 패스에 slf4j-nop.jar, slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar 또는 logback-classic.jar를 1개만 배치하면 문제가 해결됩니다.

jar와 slf4j api.jar를 클래스 경로에 추가하면 작업이 완료됩니다.행운을 빌어요.

이 라이브러리를 추가하여 해결합니다: slf4j-1000-1.7.25.jar 공식 웹 https://www.slf4j.org/download.html에서 다운로드할 수 있습니다.

는 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★<scope>test</scope>,<scope>provided</scope>@thangaraj에 기재되어 있습니다.

문서에는 다음과 같이 기재되어 있습니다.

이 범위는 응용 프로그램을 정상적으로 사용하기 위해 종속성이 필요하지 않으며 테스트 컴파일 및 실행 단계에서만 사용할 수 있음을 나타냅니다.테스트 종속성은 전이적이지 않으며 테스트 및 실행 클래스 경로에만 존재합니다.

따라서 테스트 목적으로 종속 항목이 필요하지 않은 경우 (mvnrepository에 표시되는 내용) 대신 사용할 수 있습니다.

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-nop -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-nop</artifactId>
    <version>1.7.24</version>
    <scope>test</scope>
</dependency>

스코프가 없는 경우(다른 스코프가 제공되지 않는 경우 디폴트로 스코프가 컴파일 됩니다).

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-nop -->
<dependency>  
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-nop</artifactId>
   <version>1.7.25</version>
</dependency>

이것은 다음과 같습니다.

 <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-nop -->
 <dependency>  
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-nop</artifactId>
   <version>1.7.25</version>
   <scope>compile</scope>
 </dependency>

여기 내 5센트...

테스트를 실행할 때도 같은 문제가 있었습니다.그래서 테스트 실행 시에만 구현을 추가하여 수정했습니다.저는 이 프로젝트에 그라들을 사용하고 있습니다.

// https://mvnrepository.com/artifact/ch.qos.logback/logback-classic

테스트 실행 시간유일한 그룹: 'ch.qos.logback', 이름: 'logback-classic', 버전: '1.2.3'

문제는 hibernate를 사용했을 때 이미 slf4j를 사용하고 있는 것을 보고 클래스 패스에 있기 때문에 사용하기로 했습니다.다음 단계 - slf4j용 imlementor 추가, maven에 추가:

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

하지만 그것은 오류로 실패했다!SLF4J: "org.slf4j.impl" 클래스를 로드하지 못했습니다.Static Logger Binder"

해결방법은 hibernate의 slf4j 의존관계는 버전 1.7.26이었고 마이너 버전 의존관계 1.7.25를 추가했습니다.그래서 내가 이걸 고쳤을 때 - 모든 게 괜찮아졌어

SLF4J 에러 코드에 따라

클래스 org.slf4j.impl을 로드하지 못했습니다.StaticLoggerBinder 이 경고 메시지는 org.slf4j.impl이 되면 보고됩니다.StaticLoggerBinder 클래스를 메모리에 로드할 수 없습니다.이 문제는 클래스 경로에서 적절한 SLF4J 바인딩을 찾을 수 없는 경우에 발생합니다.클래스 패스에 slf4j-nop.jar slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar 또는 logback-classic.jar를 1개만 배치하면 문제가 해결됩니다.

slf4j-api 버전 2.0.x 이후에는 ServiceLoader 메커니즘을 사용합니다.logback 1.3 이후와 같이 타겟 slf4j-api 2.x에는 org.slf4j.impl이 포함되어 있지 않습니다.Static Logger Binder.slf4j-api 2.0.x를 대상으로 하는 로깅 백엔드를 배치하는 경우 클래스 경로에 slf4j-api-2.x.jar가 필요합니다.관련 FAQ 엔트리를 참조해 주세요.

1.6.0 SLF4J 버전 1.6 이후로는 바인딩이 없는 경우 SLF4J는 기본적으로 No-Operation(NOP; 동작 없음) 로거 실장이 됩니다.

응용 프로그램의 패키징을 담당하며 로깅에 관심이 없는 경우 응용 프로그램의 클래스 경로에 slf4j-nop.jar를 배치하면 이 경고 메시지가 제거됩니다.라이브러리나 프레임워크 등의 임베디드 컴포넌트는 SLF4J 바인딩에 대한 의존성을 선언하지 않고 slf4j-api에만 의존합니다.라이브러리가 SLF4J 바인딩에 대한 컴파일 시간 의존을 선언하면 최종 사용자에게 해당 바인딩을 강제하여 SLF4J의 목적을 부정합니다.

이 게시물이 조금 오래된 건 알지만, 다른 누군가가 이 문제에 직면했을 경우를 대비해서:

CLASSPATH에 slf4j-jdk14-X.X.jar를 추가합니다(X.X는 버전 번호입니다.예를 들어 slf4j-jdk14-1.7.5.jar).

HTH

저는 제나를 사용하고 pom.xml에 펠로우 의존성을 추가합니다.

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

slf4j-simple을 추가하려고 하면 "SLF4J: Failed to load class "org.slf4j.impl"이 사라집니다.StaticLoggerBinder" 오류입니다만, logback-classic에서는 보다 상세한 정보가 표시됩니다.

공식 문서

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

반응형