我有一個澤西2.8的工作應用程序,我試圖升級到2.22.2。但是,當我做到這一點,新澤西不斷拋出這些異常:MessageBodyProviderNotFoundException將澤西更新到2.22.2時
org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter not found for media type=application/json, type=class java.util.ArrayList, genericType=class java.util.ArrayList.
我甚至手動添加的傑克遜依賴
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.7.2</version>
</dependency>
但它並不能幫助。
我使用Spring啓動,這是我的配置類:
public class JerseyConfig extends ResourceConfig {
public JerseyConfig() {
packages("com.xxxxxx.resource", "com.xxxxx.provider");
register(MultiPartFeature.class);
register(LoggingFilter.class);
this.property(ServerProperties.BV_SEND_ERROR_IN_RESPONSE, true);
this.property(ServerProperties.RESPONSE_SET_STATUS_OVER_SEND_ERROR, true);
this.property(ServletProperties.FILTER_FORWARD_ON_404, true);
}
}
而且我的pom.xml的相關部分:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.glassfish.jersey</groupId>
<artifactId>jersey-bom</artifactId>
<version>${jersey.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependency>
<groupId>org.glassfish.jersey.ext</groupId>
<artifactId>jersey-spring3</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.ext</groupId>
<artifactId>jersey-bean-validation</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.7.2</version>
</dependency>
再次感謝。任何想法爲什麼升級時發生? – user384729
如果您接受POJO參數或返回POJO響應,Jersey需要JSON提供程序來處理序列化,而不僅僅是Jackson核心。如果你用核心Jackson自己序列化它,也就是說你只需要一個String方法參數(然後使用Jackson反序列化)或者在使用Jackson進行序列化後返回一個String,那麼Jersey不需要提供者。它只是發送或接收字符串。這是我能想到的唯一一件事,那就是你的行事方式不同。除此之外,僅僅依賴於你的文章,只是將版本更改爲2.8,我不知道它是如何... –
...將與POJO一起工作。沒有提供者來處理POJO –