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

내 응용 프로그램은 tcServer와 WebSphere 6.1 모두에 배포됩니다. 이 응용 프로그램은 ehCache를 사용하므로 slf4j가 종속성으로 필요합니다. 결과적으로 slf4j-api.jar (1.6) jar을 war 파일 번들에 추가했습니다.

응용 프로그램은 다음 오류를 제외하고 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에 배포하면을 얻습니다 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.jar신청서에 추가 했습니다 slf4j-api-1.6.1.jar.

이것은 내 문제를 해결했습니다. 이 문제가있는 다른 사람들에게 도움이되기를 바랍니다.


답변

이것은 구글 검색에서 온 사람들을위한 것입니다.

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>


답변

클래스 경로에 다음 jar 파일을 추가해야합니다 slf4j-simple-1.6.2.jar.. 없는 경우 다운로드하십시오. http://www.slf4j.org/codes.html#multiple_bindings참조하십시오


답변

여기에 약간의 답변이 slf4j-simple 종속을 maven pom 파일에 추가하는 것이 좋습니다. 최신 버전을 확인하고 싶을 수도 있습니다.

에서 https://mvnrepository.com/artifact/org.slf4j/slf4j-simple
당신은 바인딩 SLF4J의 간단한의 최신 버전을 찾을 수 있습니다. 가장 적합한 것을 선택하십시오 (2019-02의 1.7.26은 2019-07 기준 안정 버전 임). pom.xml에 포함하십시오.

귀하의 편의를 위해 일부 종속성이 여기에 표시되어 있지만 읽을 때 최신 상태가 아닐 수도 있습니다!

2019-10의 알파 버전

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-simple</artifactId>
   <version>2.0.0-alpha1</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>

안정적인 버전 2019-12

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

아래 주석 덕분에 스코프 테스트 부분을 제거했습니다.


답변

나는 같은 오류에 직면했다. 로컬 개발에서 slf4j-api, slf4j-log4j12 및 log4j를 구성했습니다. 모든 구성은 괜찮 았지만 mvnrepository에서 복사 한 slf4j-log4j12 종속성에는 테스트 범위가 <scope>test</scope>있습니다. 이것을 제거하면 모든 것이 정상입니다.

때때로 어리석은 실수는 우리의 머리를 부러 뜨립니다.)


답변

때때로 우리는 warnin에서 메모를 볼 수 SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.있습니다.

이것은 클래스 경로에서 적절한 SLF4J 바인딩을 찾을 수 없을 때 발생합니다.

이 경고가 발생하는 이유를 검색 할 수 있습니다.
에서 jar 중 하나를 추가 *slf4j-nop.jar, slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar또는 logback-classic.jar*클래스 패스에하면 문제를 해결해야한다.

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

예를 들어 위 코드를 maven 프로젝트의 build.gradle코드 또는 해당 코드에 추가하십시오 pom.xml.