스프링부트 프로젝트에서 log4j2 설정파일을 보통 xml로 설정하는데, xml 대신 yml로 사용할 경우 빌드툴에 jackson-dataformat-yaml 과 jackson-databind를 추가해줘야 한다.
그런데 이 두개의 버전이 불일치할 경우 다음과 같은 에러가 발생한다
Caused by: java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/ser/std/ToStringSerializerBase
해당 에러가 발생하는 사유는 jackson-dataformat-yaml과 jackson-databind, 그리고 그 밑에 속한 jackson-core와 jackson-annotations의 버전인 불일치하기 때문에 발생하는 문제다.
내가 추가한 jackson-dataformat-yaml과 jackson-databind과 자동으로 추가된 jackson-core와 jackson-annotations의 버전을 보면 서로 불일치한 것을 확인할 수 있다.
만약 jackson-dataformat-yaml과 jackson-databind의 버전을 가장 최신의 버전(이 글을 쓸때의 가장 최신의 버전은 2.12.3 버전이다)으로 셋팅해줘도 jackson-core와 jackson-annotations의 버전(2.11.4)과 불일치 하기 때문에 에러가 발생한다
에러 내용 :
Exception in thread "main" java.lang.NoSuchMethodError: 'com.fasterxml.jackson.core.util.JacksonFeatureSet com.fasterxml.jackson.core.JsonParser.getReadCapabilities()'
때문에 jackson-dataformat-yaml과 jackson-databind의 버전을 jackson-core와 jackson-annotations의 버전과 동일한 2.11.4 버전으로 셋팅해줘야 한다.
'IT > SpringBoot' 카테고리의 다른 글
SqlSessionFactoryBean setMapperLocations에 mapper.xml 여러 개 등록하기 (1) | 2022.03.17 |
---|---|
QUARTZ 스케쥴러에서 PREV_FIRE_TIME, NEXT_FIRE_TIME, START_TIME 조회하기 (0) | 2022.03.03 |
스프링부트 Gradle 버전 변경하기 (0) | 2020.04.05 |
스프링부트에 log4j2 적용하기(gradle, log4j2.yml 활용) (0) | 2020.03.29 |
Actuator & Prometheus를 활용한 Spring Boot 애플리케이션 모니터링 (0) | 2020.01.19 |
댓글