Получение ошибки в коде библиотеки Джексона

Мы используем dropwizard версии 0.6.3. Когда мы пытаемся обновить версию 0.7.0, мы получаем эту ошибку при запуске службы.

Исключение в потоке «основной» java.lang.VerifyError: класс com.fasterxml.jackson.module.afterburner.deser.SuperSonicBeanDeserializer переопределяет окончательный метод десериализации. (Lcom/fasterxml/jackson/core/JsonParser;Lcom/fasterxml/jackson/databind/ DeserializationContext;)Ljava/lang/Object;

Пробовал искать, решения не нашел. Когда я заглянул в класс SuperSonicBeanDeserializer, у него есть один метод переопределения. Но класс SuperSonicBeanDeserializer является окончательным. Я не знаю, как решить эту проблему. Любое решение/предложение поможет нам много.


person Manikandan    schedule 18.05.2014    source источник
comment
Скорее всего, у вас есть две версии библиотеки Джексона в вашем пути к классам. Как вы создаете свое приложение?   -  person Alexey Gavrilov    schedule 18.05.2014
comment
Спасибо. Как часть одного модуля зависимостей, также включены разные версии Джексона.   -  person Manikandan    schedule 18.05.2014
comment
Можете ли вы избавиться от другой версии Джексона? В противном случае это может вызвать всевозможные проблемы. Я рекомендую вам придерживаться последней версии Jackson, которая поставляется с Dropwizard.   -  person Alexey Gavrilov    schedule 18.05.2014
comment
Особенно важно, чтобы версия модуля Afterburner была совместима с основными компонентами Jackson (jackson-core, jackson-databind): версии патчей могут отличаться, но минорная версия ДОЛЖНА совпадать. Похоже, это основная причина в вашем случае.   -  person StaxMan    schedule 19.05.2014


Ответы (1)


Взгляд на дерево зависимостей maven должен помочь найти проблему:

mvn dependency:tree -Dverbose

Ищите «пропущено из-за конфликта» в результатах. Вероятно, у вас есть версия jackson-databind старше 2.3.0, которая переопределяет версию в Dropwizard 0.7.

person alindsey    schedule 20.05.2014
comment
Это решило проблему для меня и смогло исправить ее двумя разными способами. Один указывает jackson-databind в качестве зависимости и устанавливает версию 2.3.x, или второй устанавливает исключения для зависимости, которая вводила старую версию jackson. - person bramp; 13.06.2014
comment
Вы также можете использовать: 'mvn dependency:tree -Dverbose -Dincludes=:jackson-databind::', чтобы получить более точную информацию о путях к этой зависимости - person Ivan Hristov; 14.06.2014