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>
在编写一个使用 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>