2011-10-14 21 views
12

Tôi có một dịch vụ web Java chạy trong Tomcat 6 chấp nhận đầu vào JSON. Tôi đang cố gắng sử dụng Jackson ObjectMapper để phân tích cú pháp đầu vào. Nhưng khi khởi tạo đối tượng ObjectMapper Tôi nhận được lỗi nàyJackson + Tomcat - java.lang.VerifyError: Không thể kế thừa từ lớp cuối cùng

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

Tại dòng 169 Tôi có ObjectMapper mapper = new ObjectMapper();

Khi gọi com.test.project.offline.ws.WsApiResource.updateData() phương pháp này tại địa phương trong một kiểm tra đơn vị nó hoạt động mà không có bất kỳ lỗi nào.

Vui lòng giúp tôi khắc phục sự cố này. Tôi đang sử dụng Jackson 1.8.4 và tomcat 6.

CẬP NHẬT: Đã khắc phục sự cố. Vấn đề là một phiên bản khác của jackson trong cây phụ thuộc. Loại trừ nó đã khắc phục được sự cố.

Trả lời

5

Tôi cũng gặp vấn đề tương tự với Apache Lucene. Tôi đã có lucene-core-3.6.0.jar và lucene-core-3.5.0.jar trong thư mục/WEB-INF/lib của mình. Loại bỏ một hoặc khác cũng cố định vấn đề của tôi. Nó phải là một vấn đề versioning.

1

Cùng đối với tôi - ứng dụng EJB3 tôi sử dụng jackson-all-1.9.4 - và container glassfish tôi (v2.1) chứa một lib/jackson-asl-0.9.4.jar:

java.lang.VerifyError: Cannot inherit from final class 

Bây giờ, tôi đã thay thế jackson-tất cả với gson.

Cảm ơn,

Danny

4

tôi đã cùng một vấn đề với Apache Solr, và nó đã được giải quyết bằng cách xóa bộ nhớ cache ~/.m2 tôi.

Sự cố này cũng được gây ra bằng cách chỉ định phiên bản sai của phụ thuộc trong tệp pom.xml của tôi, trong đó gói khác tự động tải xuống phiên bản khác.

Maven thực sự cần có một số loại phiên bản mâu thuẫn của chương trình độ phân giải phụ thuộc ...

0

Neil có một câu trả lời tuyệt vời cho câu hỏi này. Tuy nhiên, ngoài bộ nhớ đệm M2 của bạn, hãy kiểm tra xem bạn có phải là DUMMY hoàn chỉnh như I WAS và bảo đảm POM của bạn không bao gồm nói 2 gói mà cùng một lớp Final được khai báo hay không. Google API nổi tiếng về việc lai chéo bao gồm các lớp trong các Chum API của họ. Đảm bảo bạn xóa mọi thứ bạn không cần!

Các vấn đề liên quan