首页 > 解决方案 > ProcessingException: RESTEASY003145: 找不到内容类型 application/json 和类型接口 java.util.List 的 MessageBodyReader - 仅限 JAR

问题描述

我正在将 resteasy 客户端与 jackson 提供程序一起使用。这是 build.gradle 片段:

compile "org.jboss.resteasy:resteasy-jaxrs:3.6.2.Final"
compile "org.jboss.resteasy:resteasy-client:3.6.2.Final"
compile "org.jboss.resteasy:resteasy-jackson2-provider:3.6.2.Final"

我处理服务器响应的那一行是

(List<String>) response.readEntity(List.class)

(服务器返回 aList<String>并且请求方法用 注释@Produces(MediaType.APPLICATION_JSON)

当我从 Eclipse 中运行客户端时,一切都很好,但是在我使用 gradle(任务:jar)创建一个 JAR 并启动它并执行请求之后,我得到:

javax.ws.rs.ProcessingException: RESTEASY003145: Unable to find a MessageBodyReader of content-type application/json and type interface java.util.List
    at org.jboss.resteasy.core.interception.ClientReaderInterceptorContext.throwReaderNotFound(ClientReaderInterceptorContext.java:37)
    at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.getReader(AbstractReaderInterceptorContext.java:80)
    at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.proceed(AbstractReaderInterceptorContext.java:53)
    at org.jboss.resteasy.client.jaxrs.internal.ClientResponse.readFrom(ClientResponse.java:334)
    at org.jboss.resteasy.client.jaxrs.internal.ClientResponse.readEntity(ClientResponse.java:261)
    at org.jboss.resteasy.specimpl.BuiltResponse.readEntity(BuiltResponse.java:237)

... (at the line (List<String>) response.readEntity(List.class))

jar里面META-INF\services\有2个javax.ws.rs.ext.Providers文件:

org.jboss.resteasy.plugins.providers.DataSourceProvider
org.jboss.resteasy.plugins.providers.DocumentProvider
org.jboss.resteasy.plugins.providers.DefaultTextPlain
org.jboss.resteasy.plugins.providers.DefaultNumberWriter
org.jboss.resteasy.plugins.providers.DefaultBooleanWriter
org.jboss.resteasy.plugins.providers.StringTextStar
org.jboss.resteasy.plugins.providers.SourceProvider
org.jboss.resteasy.plugins.providers.InputStreamProvider
org.jboss.resteasy.plugins.providers.ReaderProvider
org.jboss.resteasy.plugins.providers.ByteArrayProvider
org.jboss.resteasy.plugins.providers.FormUrlEncodedProvider
org.jboss.resteasy.plugins.providers.JaxrsFormProvider
org.jboss.resteasy.plugins.providers.CompletionStageProvider
org.jboss.resteasy.plugins.providers.ReactiveStreamProvider
org.jboss.resteasy.plugins.providers.FileProvider
org.jboss.resteasy.plugins.providers.FileRangeWriter
org.jboss.resteasy.plugins.providers.StreamingOutputProvider
org.jboss.resteasy.plugins.providers.IIOImageProvider
org.jboss.resteasy.plugins.interceptors.CacheControlFeature
org.jboss.resteasy.plugins.interceptors.encoding.ClientContentEncodingAnnotationFeature
org.jboss.resteasy.plugins.interceptors.encoding.ServerContentEncodingAnnotationFeature
org.jboss.resteasy.plugins.interceptors.encoding.MessageSanitizerContainerResponseFilter
org.jboss.resteasy.plugins.providers.sse.SseEventProvider
org.jboss.resteasy.plugins.providers.sse.SseEventOutputProvider
org.jboss.resteasy.plugins.providers.sse.SseEventSinkInterceptor

org.jboss.resteasy.plugins.providers.jackson.ResteasyJackson2Provider
org.jboss.resteasy.plugins.providers.jackson.UnrecognizedPropertyExceptionHandler
org.jboss.resteasy.plugins.providers.jackson.PatchMethodFilter

所以jackson2提供者似乎被列出来了。

我看过的问题:

RESTEASY003145:找不到内容类型 application/json 和类型类 org.keycloak.representations.AccessTokenResponse 的 MessageBodyReader

找不到内容类型 application/json 和类型类 java.lang.String 的 MessageBodyReader

找不到内容类型 text/html 和类型接口 java.util.List 的 MessageBodyReader

我不知道问题是否出在创建jar,杰克逊提供者,resteasy的gradle任务中......

标签: javagradlejacksonjax-rsresteasy

解决方案


推荐阅读