2011-10-14 8 views
12

Mam usługę webową Java działającą w Tomcat 6, która akceptuje wejście JSON. Próbuję użyć Jackson ObjectMapper do parsowania input json. Ale kiedy inicjowania obiektu ObjectMapper ja dostaję ten błądJackson + Tomcat - java.lang.VerifyError: Nie można odziedziczyć po ostatniej klasie

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) 
....... 

Na linii 169 mam ten ObjectMapper mapper = new ObjectMapper();

Dzwoniąc com.test.project.offline.ws.WsApiResource.updateData() metoda lokalnie w test jednostkowy działa bez żadnego błędu.

Uprzejmie pomóż mi w naprawieniu tego. Używam Jackson 1.8.4 i tomcat 6.

AKTUALIZACJA: Naprawiono problem. Problemem była inna wersja jackson w drzewie zależności. Wyłączenie go rozwiązało problem.

Odpowiedz

5

Miałem również ten sam problem z Apache Lucene. Miałem lucene-core-3.6.0.jar i lucene-core-3.5.0.jar w folderze/WEB-INF/lib. Usunięcie jednego z nich również naprawiło mój problem. To musi być problem z wersjami.

1

To samo dla mnie - moja aplikacja używa ejb3 jackson-all-1.9.4 - a moja GlassFish pojemnik (v2.1) zawiera lib/Jackson-ASL-0.9.4.jar:

java.lang.VerifyError: Cannot inherit from final class 

Teraz zastąpiłem jackson-all z gsonem.

Dzięki,

Danny

4

miałem ten sam problem z Apache Solr i został rozwiązany przez usunięcie mojego ~/.m2 cache.

Ten problem został również spowodowany przez podanie niewłaściwej wersji zależności w pliku pom.xml, gdzie inny pakiet automatycznie pobierał kolejną wersję.

Maven naprawdę powinien mieć jakiś sprzecznymi wersjami systemu rozwiązywania zależności ...

0

Neil ma świetną odpowiedź na to pytanie. Jednak oprócz pamięci podręcznej M2, sprawdź, czy jesteś kompletnym DUMMYM takim, jak I WAS i upewnij się, że twój POM nie zawiera pakietów powiedz 2, w których deklarowana jest ta sama klasa Final. Interfejsy API Google są znane z krzyżowania klas w słoikach API. Upewnij się, że usuwasz WSZYSTKO, czego nie potrzebujesz!

Powiązane problemy