2015-06-10 14 views
8

Khi viết một ứng dụng khách Jersey đơn giản đang tiêu thụ dữ liệu XML, tôi đã xem ngoại lệ này "MessageBodyReader không tìm thấy cho loại phương tiện = application/xml". Tất cả các thiết lập của tôi, bao gồm cả trình khách-jersey như phụ thuộc maven đều tốt. Phiên bản tôi đang sử dụng là 2.17. Khi tôi đã giảm phiên bản xuống 2.15, nó bắt đầu hoạt động tốt. Bất cứ ai có thể giải thích những gì phụ thuộc cần phải được bao gồm cho phiên bản 2.17 để làm việc.Vấn đề phiên bản Jersey: MessageBodyReader không được tìm thấy cho loại phương tiện = application/xml

Maven phụ thuộc (hoạt động trên 2,15 và thấp hơn)

<dependency> 
    <groupId>org.glassfish.jersey.core</groupId> 
    <artifactId>jersey-client</artifactId> 
    <version>${jersey.version}</version> 
</dependency> 

Java Code Snippet cho tiêu thụ các dịch vụ

Client c = ClientBuilder.newClient(); 
WebTarget target = null; 
target = c.target(Main.BASE_URI_XML); 

String customerId = "415D7AB5"; 

XYZ response = target.path(customerId).request(MediaType.APPLICATION_XML).get(XYZ.class); 

Trả lời

16

Có một cái nhìn tại 27.3. Migrating from Jersey 2.15 to 2.16

27,3. 1.1. Các nhà cung cấp JAX-B được tách ra khỏi lõi

Từ phiên bản 2.16 trở đi, tất cả các nhà cung cấp JAX-B đang được đóng gói trong một mô-đun riêng biệt.

<dependency> 
    <groupId>org.glassfish.jersey.media</groupId> 
    <artifactId>jersey-media-jaxb</artifactId> 
    <version>2.17</version> 
</dependency> 
+0

Thanks @ppeskillet nó hoạt động. Xấu của tôi nên đã kiểm tra các tài liệu hướng dẫn. – Anant

+1

Cảm ơn câu trả lời của bạn. Tôi đã gần như chết cho đến khi tìm thấy câu trả lời của bạn. :) –

+0

Chỉ một nhận xét (mở ra discus). Nếu bạn nhập BOM thay vì phụ thuộc riêng bạn, bạn có thể tránh điều đó. –

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