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


619

내 응용 프로그램은 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이 없습니다.

누구든지 여기서 무슨 일이 일어나고 있는지 아이디어가 있습니까?


기사 는 내 문제를 해결했다
회계사 م

답변:


517

WebSphere 6.1과 동일한 문제가있었습니다. Ceki가 지적했듯이 WebSphere가 사용하고있는 많은 항아리가 있었고 그중 하나가 slf4j의 이전 버전을 가리키고있었습니다.

No-Op 폴백은 slf4j -1.6+에서만 발생하므로 그보다 오래된 것은 예외가 발생하고 배포가 중단됩니다.

SLf4J 사이트에 이를 해결 하는 문서가 있습니다 . 나는 그것을 따르고 이미 가지고 있던 slf4j-simple-1.6.1.jar신청서에 추가 했습니다 slf4j-api-1.6.1.jar.

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


4
예, 여기에 언급 된대로 오류가 발생합니다 -slf4j.org/manual.html 그러나 지금 새 오류가 발생합니다. 원인 : java.lang.ClassNotFoundException : org.apache.commons.logging.LogFactory
david blaine

1
"Ceki가 지적했듯이, WebSphere가 사용하고있는 많은 병이 있었고 그 중 하나가 이전 버전의 slf4j를 가리키고있었습니다." -Maven이 의존성을 돌보는 데 너무 많은 일! 좋은 농담 이었어.
AndroidDev


2
1.7을 사용하고 있으며 같은 문제가 있습니다. slf4j-simple-1.7.jar를 추가하면 문제가 해결되었습니다.
littletiger

1
이것은 나를 위해 작동하지 않습니다. slf4j-simple jar은 log4j.properties를 선택하지 않습니다. 대신, slf4j-log4j12 및 log4j jar를 추가하여 구현을 사용합니다.
flyrain

379

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

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>

1
slf4j-simple버전이 같지 않은 이유가 slf4j-api있습니까? 그것들은 아마도 잘 작동 할 것이지만, 일반적으로 같은 버전을 사용하는 것이 더 안전하고 더 나은 방법이라고 생각합니다. 또한 단위 테스트를 실행할 때와 같이 콘솔 전용 로깅을 활성화 해야하는 경우 slf4j-simple충분합니다 (그렇지만 나에게는 충분했습니다).
Ivaylo Slavov

22
AFAIK에는 slf4j의 impl이 하나만 있어야합니다 (예 : slf4j-log4j12 또는 slf4j-simple).
Ondra Žižka

@ Igor KatKov 이것은 로컬 컴퓨터에서만 작동하지만 Jenkins에서 동일한 오류가 발생하면 무엇이 잘못되었는지 확실하지 않습니다. 당신은 분명히하십시오 수 있습니다
vikramvi

slf4j-api에는 구성을 처음 실행할 때 사용할 수없고 구성 파일을 편집하지 않은 구성이 필요합니다. slf4j-simple을 사용하면 WYSIWYG 이외의 파일을 구성하지 않고도 기본 로거를 사용할 수 있습니다. 그런 다음 파일을 구성하고 원하는대로 로거 출력을 사용자 정의하는 방법을 익힌 후에는 slf4j-api로 다시 이동할 수 있습니다. (아직도 어디에서 그리고 어떻게 직접 편집하는지 배우십시오)
chrips

53

이것을 pom.xml에 추가하십시오 .

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

3
해결책은 저에게 효과적이었습니다. 그것은 (I 오류 설명 있음) 설명서에 대한 가치가 가리키는 : slf4j.org/codes.html#StaticLoggerBinder
의 Witold Kaczurba

2
간단한 kafka 제작자 예제를 실행하는 동안 이것은 나에게 효과적이었습니다. 무리 감사!
Viren

@WitoldKaczurba가 옳습니다. maven을 사용하여 종속성을 사용하는 동안 동일한 문제가 발생했습니다. 방금 googled하고 slf4j.org/codes.html#StaticLoggerBinder 로 이동하여 문제와 해결 방법을 설명합니다. slf4j-api 버전 1.7.25를 사용하고있었습니다. 언급 된 링크에서 문서를 확인한 후 <dependency>를 사용 <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.7.25</version> </dependency>했고 문제가 해결되었습니다.
Mohammad Anas

로거가 필요한 라이브러리 (예 : slf4j가 필요한 핸들 바)가 해당 폼을 선언하지 않으면 Maven을 사용하는 요점을 이해하지 못합니다. 어쨌든 고마워.
Eric Duminil

제 경우에는 이것이 해결책이 아닙니다. 호환되지 않는 버전의 slf4j 및 log4j 또는 다른 플러그인이 있다는 것은 정보를 숨기는 것입니다.
hariprasad

42

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


그러나 tcServer 클래스 경로에 해당 항아리가 없으므로 혼란 스럽습니다. tcServer에서 추가 jar이 필요하지 않지만 WebSphere에서는 어떻게해야하는지 이해할 수 없습니다.
JJ180

1
나를 위해 일했으며 받아 들인 대답보다 훨씬 간단합니다. 버전 1.7.7도 작동했습니다.
La-comadreja

1
나는 이미 jul-to-slf4j내 안에 pom.xml있었고 방금 slf4j-simple전에 추가 했으며 정상적으로 작동합니다.
slugmandrew

jar 파일을 클래스 경로에 어떻게 간단하게 추가합니까?
Dean013

수업 경로가 무엇인지 설명해 주시겠습니까? 어디에? 이해가 안됩니다
Rose8525

36

여기에 약간의 답변이 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>

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


6
왜 사용 <scope>test</scope>합니까? 내 경험상 적어도 클래스 경로에 runtime있는지 확인 하려면 범위가 필요 slf4j-simple합니다. test스코프 에서만 작동하는 방법이 궁금합니다 .
ecoe

이것을 지적 해 주셔서 감사합니다. 그에 따라 답변에서 범위 태그를 제거했습니다. 잘라 내기 및 붙여 넣기 문제였습니다. 공급하는 링크는 이러한 방식으로 베타 종속성을 제공합니다.
Wolfgang Fahl 2014

27

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

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


1
정말 고마워! 나는 같은 문제를 겪었고 당신의 게시물을 찾을 때까지 그것을 포기하려고했습니다!
Ergodyne

1
이것은 또한 나를 도왔다
cod3min3

27

때때로 우리는 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.


15

slf4j-log4j12-1.6.4.jar클래스 경로 에 파일 을 넣으면 트릭을 수행합니다.


6
또는 pom <dependency> <groupId> org.slf4j </ groupId> <artifactId> slf4j-log4j12 </ artifactId> </ dependency>에 종속성을 추가하십시오.
enkor

11

의존성 관리에 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/


1
또한 maven 사용자의 경우 로그 백 코어를 자동으로 가져 오는 pom.xml에 다음을 추가해야한다는 것을 알았습니다. <dependency> <groupId> ch.qos.logback </ groupId> <artifactId> logback-classic </ artifactId> <version> 1.0.9 </ version> </ dependency>
Paul

2
This is not an error. This message tells you that you do not have any logger implementation (such as e.g. Logback) added in classpath, and therefore NOP (No Operation) log @Paul이 언급 한 것처럼 sarxos 주석을 찾아 logback-classic을 추가해야합니다. 에 변화의 또 다른 접근 방법 <artifactId>slf4j-simple</artifactId>에서 <artifactId>slf4j-api</artifactId>또한 작업을 수행합니다. 여기에 설명되어 있습니다
Abhijeet

10

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


2
로그 백을 추가하면이 문제가 해결되었습니다. 최신 logback classic을 pom (1.1.7)에 삭제했으며 slf4j 종속성이 너무 오래되어 (1.6.2) 실패했습니다. slf4j를 1.7.20으로 업그레이드하고 1.1.7로 로그 백을 남기는 것처럼 로그 백을 1.0.0으로 다운 그레이드하고 1.6.x에서 slf4j를 그대로 두었습니다.
ECDragon

5

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

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

  • log4j-slf4j-log4j12-1.7.21.jar
  • java.util.logging-slf4j-jdk14-1.7.21.jar 등

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

maven 의존성을 위해

<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


귀하의 솔루션은 나를 위해 일한 유일한 솔루션이었습니다. 감사합니다!
Edenshaw

5

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>

4

Websphere의 경우 이전 버전의 slf4j-api.jar, 1.4.x가 있습니다. 또는 1.5.x 어딘가에 누워 있습니다. tcServer에서 관찰되는 동작, 즉 NOP 로의 페일 오버는 slf4j 버전 1.6.0 이상에서 발생합니다. 모든 플랫폼에서 slf4j-api-1.6.x.jar을 사용하고 클래스 경로에 slf4j-api의 이전 버전이 없는지 확인하십시오.


감사합니다. WebSphere 6.1 클래스 경로를 확인했는데 다른 버전의 slf4j가 표시되지 않습니다. 예를 들어 WebSphere 파일 시스템에서 slf4j jar 를 검색 한 결과 1.6 버전 만 반환되었습니다. WebSphere가 slf4j와 함께 제공되는지 알고 있습니까?
JJ180

모든 것이 가능하지만 WebSphere가 slf4j-api와 함께 번들로 제공된다면 매우 놀랍습니다. 용접 번들 slf4j-api.jar. 용접을 사용하고 있습니까?
Ceki

4

다음 오류가 발생하면이 문제가 발생했습니다.

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.

Inspite 나는 전체 제안 보수 항아리와 시도, 같은 slf4j-log4j12-1.7.5.jar, slf4j-simple-1.7.5오류 메시지가 여전히 지속되었다. slf4j-jdk14-1.7.5.jar자바 라이브러리에 추가하면 문제가 마침내 해결되었습니다 .

http://www.slf4j.org/download.html 에서 전체 slf4j 패키지를 받으십시오 .


4

이 문제를 해결하려면 다음 종속성을 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>

다른 대답에서 지적한 것처럼 첫 번째 종속성을 방금 포함했으며 작동합니다. 두 가지 종속성 모두 문제를 해결하지 못합니다.
RubioRic

Intellij의 번들 Maven 대신 로컬 Maven을 사용하고 싶습니다.
압둘 가파르

4

jar 포함 및 순수한 maven 솔루션의 대안으로 포함 할 수 있습니다 gradle과 함께 maven에서 .

버전의 예 1.7.25

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

이것을 build.gradle파일 의 종속성 안에 넣으십시오 .


3

Struts2 + Spring 프로젝트에서 일하고 있습니다. 따라서 의존성이 필요합니다slf4j-api-1.7.5.jar .

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

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

을 추가하여 문제를 해결했습니다 slf4j-log4j12-1.7.5.jar.

따라서이 항아리를 프로젝트에 추가하여 문제를 해결하십시오.


3

SLF4J 수동 상태

SLF4J (Simple Logging Facade for Java)는 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.xmlsrc/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 매뉴얼의 자세한 설명 참조 )


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

위에서 언급 한 종속성을 pom.xml 파일에 넣습니다.


그러나 최신 버전을 확인하십시오.
user1053510

2

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

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

1

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 중 하나만 배치 하면 문제가 해결됩니다.

간단하게 추가 할 이 항아리 일을 완수하기 위해 클래스 패스에 SLF4J의 api.jar을 함께. 행운을 빌어 요



1

payara 5.191에서 동일한 문제가 발생했습니다

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

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

0

나는이 게시물이 조금 오래되었다는 것을 알고 있지만 다른 사람 이이 문제에 부딪 칠 경우를 대비하여

slf4j-jdk14-XXXjar를 CLASSPATH에 추가하십시오 (여기서 XXX는 버전 번호입니다 (예 : slf4j-jdk14-1.7.5.jar)).

피터 HTH


1
클래스 경로 문제를 해결하기 위해 사용자가 JDK1.4 로깅으로 되돌려 야한다고 제안하고 있습니까? 이 FAQ 항목도보십시오 : slf4j.org/faq.html#need_to_recompile
mwhs

0

Jena를 사용하고 pom.xml에 동료 의존성을 추가합니다.

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

slf4j-simple을 추가하려고하지만 "SLF4J :"org.slf4j.impl.StaticLoggerBinder 클래스를로드하지 못했습니다 "오류가 사라지지만 logback-classic은 더 자세한 정보를 표시합니다.

공식 문서


0

해결책은 공식 웹 사이트에 표시되어 있습니다.

org.slf4j.impl.StaticLoggerBinder 클래스를로드하지 못했습니다.

이 경고 메시지는 org.slf4j.impl.StaticLoggerBinder 클래스를 메모리에로드 할 수 없을 때보고됩니다. 이것은 클래스 경로에서 적절한 SLF4J 바인딩을 찾을 수 없을 때 발생합니다. 클래스 경로에 slf4j-nop.jar slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar 또는 logback-classic.jar 중 하나만 배치하면 문제가 해결됩니다. SINCE 1.6.0 SLF4J 버전 1.6부터 바인딩이없는 경우 SLF4J는 기본적으로 NOP (No-operation) 로거 구현으로 설정됩니다. 응용 프로그램 패키징을 담당하고 로깅에 신경 쓰지 않으면 응용 프로그램의 클래스 경로에 slf4j-nop.jar을 배치하면이 경고 메시지가 제거됩니다. 라이브러리 또는 프레임 워크와 같은 임베디드 구성 요소는 SLF4J 바인딩에 대한 종속성을 선언하지 말고 slf4j-api에만 의존해야합니다.

해결책 : intellij에 대한 maven 연구를 사용하여 프로젝트에 추가했으며 slf4j-jdk14.jar을 선택했습니다.


0

@thangaraj 에서 언급했듯이 문제가 <scope>test</scope>원인 일 수도 있습니다 (일부 경우 <scope>provided</scope>) .

설명서에 따르면 :

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

따라서 테스트 목적으로 의존성 이 필요하지 않은 경우 대신 ( 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>


0

나에게 문제는 : 최대 절전 모드를 사용하여 이미 slf4j를 사용하고 클래스 경로에 있음을 알았으므로 사용하기로 결정했습니다. 다음 단계-slf4j에 대한 구현자를 추가하여 maven에 추가했습니다.

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

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

해결책은 다음과 같습니다. slf4j의 Hibernate 종속성은 버전 1.7.26 이고 마이너 버전 종속성 1.7.25를 추가 했습니다 . 그래서 내가 고쳤을 때-모두 괜찮아졌다


0

나는 의존성을 추가하지 않고 단지 소비 방식을 바꾼다.

미리보기 코드

(탄력 검색 버전 <7.0을 사용하는 경우이 코드의 주석을 해제하십시오)

IndexRequest indexRequest = new IndexRequest(
  "twitter",
  "tweets",
  id // this is to make our consumer idempotent
).source(record.value(), XContentType.JSON);

현재 코드

IndexRequest indexRequest = new IndexRequest("tweets")
  .source(record.value(), XContentType.JSON)
  .id(id); // this is to make our consumer idempotent

대량 요청을 사용하고 있으며 해당 오류를 제거합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.