Month: March 2016

Using Eventuate with @SpringBoot 1.3.3

If you use the Eventuate Java/Scala client framework with Spring Boot 1.3.3 (rather Spring Boot 1.2.x) you will encounter this exception:

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [net.chrisrichardson.eventstore.subscriptions.config.EventStoreSubscriptionsConfiguration$$EnhancerBySpringCGLIB$$20370698]: Constructor threw exception; nested exception is 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;
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:163)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:89)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1098)
... 71 more
Caused by: 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;
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)

This exception is thrown because of an incompatibility between the version of jackson-module-scala used by Eventuate and the version of Jackson JSON used by  Spring Boot 1.3.3.

A later version of the Eventuate client will address this problem. In the meantime, you can fix the problem by defining the following dependency:

dependencies {
compile com.fasterxml.jackson.module:jackson-module-scala_2.10:2.6.3
}