Java XmlMapper 사용 시 버전 주의할 점

@ZungTa · 2024-08-19 월요일 · 1 min read

Spring Boot에서 XML Parsing을 위해 jackson 라이브러리를 사용했다.

Spring Boot에서는 기본적으로 jackson을 사용할 수 있지만 xml을 다루기 위해서는 jackson-dataformat-xml library를 추가해줘야한다.

Maven Repository: com.fasterxml.jackson.dataformat » jackson-dataformat-xml

처음엔 그냥 최신 버전이고 usage도 많은 2.17.2를 사용했다.

그래서 XML Parsing을 시도했더니 이런 오류들이 발생했다.

String xml = "<person><name>John</name><age>13</age></person>";

XmlMapper xmlMapper = new XmlMapper();
JsonNode flower = xmlMapper.readTree(xml.getBytes());

readTree 메서드를 사용할 때

'void com.fasterxml.jackson.core.io.IOContext.close()'
java.lang.NoSuchMethodError: 'void com.fasterxml.jackson.core.io.IOContext.close()'

readValue 메서드를 사용할 때

'com.fasterxml.jackson.databind.PropertyName com.fasterxml.jackson.databind.PropertyName.merge(com.fasterxml.jackson.databind.PropertyName, com.fasterxml.jackson.databind.PropertyName)'

원인은 버전 차이에 있었다.

현재 버전의 Spring Boot가 사용하는 com.fasterxml.jackson.core 버전과 내가 추가한 jackson-dataformat-xml 버전이 일치해야 한다. (비슷해도 된다)

그래서 내가 사용하는 Spring Boot 버전에서 사용하는 dependencies 버전들을 확인해봤다.

Dependency Versions

jackson 2.15.3 버전을 사용하는 것으로 나와서 jackson-dataformat-xml 버전을 2.15.3으로 변경했다.

그 이후엔 잘 동작하였다.

References

@ZungTa
I'm a backend developer
© ZungTa Devlog, Built with Gatsby