Jersey 版本问题:找不到媒体类型 =application/xml 的 MessageBodyReader

Jersey version issue: MessageBodyReader not found for media type=application/xml

在编写一个使用 XML 数据的简单 Jersey 客户端时,我遇到了这个异常 "MessageBodyReader not found for media type=application/xml"。我的所有设置,包括 jersey-client 作为 maven 依赖项都很好。 我使用的版本是 2.17。一旦我将版本降级到 2.15,它就开始正常工作。任何人都可以解释需要包含哪些依赖项才能使 2.17 版正常工作。

Maven 依赖项(适用于 2.15 及更低版本)

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

Java 使用服务的代码片段

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

看看27.3. Migrating from Jersey 2.15 to 2.16

27.3.1.1. JAX-B providers separated from the core

From version 2.16 onwards, all JAX-B providers are being bundled in a separate module.

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