Джексон + Tomcat - java.lang.VerifyError: Не может наследовать от окончательного класса - PullRequest
13 голосов
/ 14 октября 2011

У меня есть веб-сервис Java, работающий в Tomcat 6, который принимает ввод JSON. Я пытаюсь использовать Jackson ObjectMapper для анализа входных данных JSON. Но при инициализации объекта ObjectMapper я получаю эту ошибку

16:08:13,616 ERROR [[jersey]] Servlet.service() for servlet jersey threw exception                                                                                                                        
java.lang.VerifyError: Cannot inherit from final class                                                                                                                                                    
    at java.lang.ClassLoader.defineClass1(Native Method)                                                                                                                                                  
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)                                                                                                                                        
    at java.lang.ClassLoader.defineClass(ClassLoader.java:615)                                                                                                                                            
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)                                                                                                                            
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2733)                                                                                                        
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1124)                                                                                                                
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1612)                                                                                                                
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491)                                                                                                                
    at com.test.project.offline.ws.WsApiResource.updateData(WsApiResource.java:169) 
.......

В строке 169 у меня есть ObjectMapper mapper = new ObjectMapper();

При локальном вызове метода com.test.project.offline.ws.WsApiResource.updateData () в модульном тесте он работает без ошибок.

Пожалуйста, помогите мне исправить это. Я использую Jackson 1.8.4 и Tomcat 6.

ОБНОВЛЕНИЕ: Исправлена ​​проблема. Проблема была в другой версии Джексона в дереве зависимостей. Исключение это решило проблему.

Ответы [ 4 ]

5 голосов
/ 23 апреля 2012

У меня тоже была та же проблема с Apache Lucene. У меня были lucene-core-3.6.0.jar и lucene-core-3.5.0.jar в моей папке / WEB-INF / lib. Удаление того или другого также решило мою проблему. Это должна быть проблема с версиями.

4 голосов
/ 06 октября 2012

У меня была та же проблема с Apache Solr, и она была решена путем удаления моего ~/.m2 кэша.

Эта проблема также была вызвана указанием неверной версии зависимости в моем файле pom.xml,где другой пакет автоматически загружал другую версию.

У Maven действительно должны быть какие-то конфликтующие версии схемы разрешения зависимостей ...

1 голос
/ 06 августа 2012

То же самое для меня - мое приложение ejb3 использует jackson-all-1.9.4 - и мой контейнер glassfish (v2.1) содержит lib / jackson-asl-0.9.4.jar:

java.lang.VerifyError: Cannot inherit from final class 

Теперь я заменил Джексон-все на gson.

Спасибо,

Дэнни

0 голосов
/ 21 февраля 2016

У Нейла отличный ответ на этот вопрос.Однако, помимо вашего кеша M2, проверьте, являетесь ли вы полным DUMMY, как я, и убедитесь, что ваше POM не включает в себя, скажем, 2 пакета, в которых объявлен класс Same Final.Google API печально известны своим перекрестным включением классов в свои API-банки.Убедитесь, что вы удалите ВСЕ, что вам не нужно!

...