Подтвердить что ты не робот

Jackson + Tomcat - java.lang.VerifyError: не может наследовать от окончательного класса

У меня есть веб-служба 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() локально в unit test он работает без ошибок.

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

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

Ответ 3

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

java.lang.VerifyError: Cannot inherit from final class 

Теперь я заменил jackson-all на gson.

Спасибо,

Дэнни

Ответ 4

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