scala 2.11.7 & springboot 1.3.0 SNAPSHOT & gradle을 사용하고 있으며, java.lang.VerifyError: class com.fasterxml.jackson.module.scala.ser.ScalaIteratorSerializer overrides final method withResolved.

빌드시 다음과 같은 에러가 발생했다. 



     java.lang.VerifyError: class com.fasterxml.jackson.module.scala.ser.ScalaIteratorSerializer overrides final method withResolved.(Lcom/fasterxml/jackson/databind/BeanProperty;Lcom/fasterxml/jackson/databind/jsontype/TypeSerializer;Lcom/fasterxml/jackson/databind/JsonSerializer;)Lcom/fasterxml/jackson/databind/ser/std/AsArraySerializerBase;


원인은 scala jackson 모듈 컴파일시 withResolved 메소드 구현 이슈로 verify error가 발생했다.


scala jackson module(정확히 말하면 jackson-databind 2.6) 에서 새로운 api가 정의되었고, 이를 제대로 연동이 안되는 문제가 발생했다.

public abstract AsArraySerializerBase<T> withResolved(BeanProperty property,

        TypeSerializer vts, JsonSerializer<?> elementSerializer,

        Boolean unwrapSingle);



참고 자료 : https://github.com/FasterXML/jackson-module-scala/issues/214



gradle dependencies로 보면, spring boot 1.3.0 snapshot 빌드 버전의 jackson-databind 버전은 2.6.1 이다. 


     

\--- com.fasterxml.jackson.module:jackson-module-scala_2.10:2.3.1

     +--- org.scala-lang:scala-library:2.10.2 -> 2.11.5

     +--- com.fasterxml.jackson.core:jackson-core:2.3.1 -> 2.6.1

     +--- com.fasterxml.jackson.core:jackson-annotations:2.3.0 -> 2.6.1

     +--- com.fasterxml.jackson.core:jackson-databind:2.3.1 -> 2.6.1 (*)

     +--- com.thoughtworks.paranamer:paranamer:2.6

     +--- com.google.code.findbugs:jsr305:2.0.1

     \--- com.google.guava:guava:13.0.1

     

spring boot 1.2.6.RELEASE 버전으로는 정상적으로 spring boot가 실행되는데, jackson-databind 버전은 2.4.0 이다.

     


\--- com.fasterxml.jackson.module:jackson-module-scala_2.10:2.3.1

     +--- org.scala-lang:scala-library:2.10.2 -> 2.11.5

     +--- com.fasterxml.jackson.core:jackson-core:2.3.1 -> 2.4.6

     +--- com.fasterxml.jackson.core:jackson-annotations:2.3.0 -> 2.4.0

     +--- com.fasterxml.jackson.core:jackson-databind:2.3.1 -> 2.4.6 (*)

     +--- com.thoughtworks.paranamer:paranamer:2.6

     +--- com.google.code.findbugs:jsr305:2.0.1

     \--- com.google.guava:guava:13.0.1

     

     

그래서, jackson version을 2.4.x로 바꿔봤더니. 잘 동작된다. 


def jacksonVersion = '2.4.4'

configurations {
all*.exclude module : 'com.fasterxml.jackson.core:jackson-databind'
all*.exclude module : 'com.fasterxml.jackson.core:jackson-core'
all*.exclude module : 'com.fasterxml.jackson.core:jackson-annotations'
}

dependencies { //..

compile "com.fasterxml.jackson.core:jackson-core:${jacksonVersion}"
compile "com.fasterxml.jackson.core:jackson-databind:${jacksonVersion}"
compile "com.fasterxml.jackson.core:jackson-annotations:${jacksonVersion}" }

     

 







Posted by '김용환'
,