728x90
반응형
Spring Project를 진행하다 보면 `SLF4J: Class path contains multiple SLF4J bindings.` 라는 Warning 메세지를 볼 수 있다.
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/Users/kimseunghwan/.m2/repository/ch/qos/logback/logback-classic/1.2.9/logback-classic-1.2.9.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/Users/kimseunghwan/.m2/repository/org/slf4j/slf4j-simple/1.7.32/slf4j-simple-1.7.32.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder]
이런 Warning 메세지는 Dependecy 내부에서 같은 Dependecy지만 다른 버전을 Dependency 내부에서 참조를 하고 있으면 발생하게 된다. 이를 해결하기 위해서는 아래와 같은 방법을 사용하면 된다.
Dependecy tree 확인
현재 어떤 Dependecy가 충돌되는 Dependency를 참조하고 있는지 모르기 때문에 `mvn dependecy:tree`로 현재 내가 사용하고 있는 Dependecy를 확인한다.
$ mvn dependecy:tree
IDE에서 확인하는 방법 (Intellij)
나의 경우에는 아래와 같이 Spring boot 와 Embedded-redis에서 충돌이 발생하고 있다.
[INFO] io.coolexplorer:spring-boot-session:war:0.0.1-SNAPSHOT
[INFO] +- org.springframework.boot:spring-boot-starter-web:jar:2.6.2:compile
[INFO] | +- org.springframework.boot:spring-boot-starter:jar:2.6.2:compile
[INFO] | | +- org.springframework.boot:spring-boot-starter-logging:jar:2.6.2:compile
[INFO] | | | +- ch.qos.logback:logback-classic:jar:1.2.9:compile
[INFO] | | | | \- ch.qos.logback:logback-core:jar:1.2.9:compile
[INFO] | | | +- org.apache.logging.log4j:log4j-to-slf4j:jar:2.17.0:compile
[INFO] | | | | \- org.apache.logging.log4j:log4j-api:jar:2.17.0:compile
[INFO] | | | \- org.slf4j:jul-to-slf4j:jar:1.7.32:compile
...
[INFO] \- it.ozimov:embedded-redis:jar:0.7.3:test
[INFO] +- com.google.guava:guava:jar:21.0:test
[INFO] +- commons-io:commons-io:jar:2.5:test
[INFO] +- org.slf4j:slf4j-simple:jar:1.7.32:test
[INFO] \- commons-logging:commons-logging:jar:1.2:test
Dependency 제외
해결 방법은 충돌하고 있는 두 Dependency중 한 부분에서 제외를 시켜주는 것이다. 나의 경우에는 Embedded-redis에서 제외를 시켜 주었다.
변경된 pom.xml - <exclusions> 블럭이 추가되었다.
<dependency>
<groupId>it.ozimov</groupId>
<artifactId>embedded-redis</artifactId>
<version>${embedded.redis.version}</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
</exclusion>
</exclusions>
</dependency>
간단하게 해결!
728x90
반응형
'Java > Spring boot' 카테고리의 다른 글
Spring boot Validation 설정하기 (0) | 2022.01.20 |
---|---|
Embedded Redis를 이용하여 Unit test 작성하기 (0) | 2022.01.17 |
Spring server용 Dockerfile 추가 및 실행 (0) | 2022.01.15 |
Open API Document (Swagger) 설정하기 (0) | 2022.01.15 |
Spring Data Redis 에서 Key는 어떻게 생성되는가? (0) | 2022.01.13 |