2018년 4월 26일 목요일

[ObjectMapper] java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.ObjectMapper.canSerialize(Ljava/lang/Class;Ljava/util/concurrent/atomic/AtomicReference;)Z

스프링 4.3.14에서 ObjectMapper관련 jackson의 all 1.9.0, annotations 2.2.2, core 2.9.2, databind 2.2.3 jar파일을 클래스패스에 등록하였다.
org.springframework.web.servlet.mvc.annotaion.AnnotationMethodHandlerAdapter 빈안에 org.springframework.http.converter.json.MappingJackson2HttpMessageConverter 구성하였다.

※ 기존소스를 일부분 사용하는것이어서 처음에는
org.springframework.http.converter.json.MappingJacksonHttpMessageConverter로 되어있었는데 Class Not Found에러가 발생되고 관련 jar파일 설치중에 빈도 변경이 되어었다.

Symptom(징후)
클라이언트의 Ajax호출 시 서버에서 ObjectMapper방식으로 Json타입 리턴할려고 할때 아래와 같은 에러가 발생되었다.
java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.ObjectMapper.canSerialize(Ljava/lang/Class;Ljava/util/concurrent/atomic/AtomicReference;)Z

Reason(원인)
구글에 검색했을때 해결책중 관련 라이브러리 충돌에 대한 내용도 있어서 삭제하고 추가하는 작업을 하였지만 해결을 못하였다.


Solution(해결)
ObjectMapper 방식은 사용을 못하고 번거로움이 있지만 response 객체에 Json타입 문자열을 생성해서 리턴주는 방식으로 처리를 하였다.
이방식은 문자열로 Json규칙에 맡게 생성해주다보니 Ajax에서 리턴받을때 에러가 번번이 발생하였으며 익숙해지니 괜찮았다.

Reference(참조)

댓글 없음:

댓글 쓰기