未找到Java类的消息体读取器(非Maven)

时间:2014-04-21 02:50:42

标签: java json jersey

问题here略有不同。我没有使用Maven,但在类路径中包含了jersey-bundle-1.17.1。它似乎包括了jersey-json中的所有类。但是我还将jersey-json添加到classpath和WEB-INF / lib并得到相同的错误。我正在发布json

{ to: 'John', company: 'Costo' }

有什么明显的吗?

收件人是简单的POJO,有两个字符串字段 - to和company

@POST
@Path("/saveit")
@Consumes(MediaType.APPLICATION_JSON )
@Produces( MediaType.APPLICATION_JSON )
public Response saveit(Recipient rec) {
         System.out.println(rec); 
         ....
}

但我仍然得到错误:

Apr 20, 2014 8:17:23 PM com.sun.jersey.spi.container.ContainerRequest getEntity    
SEVERE: A message body reader for Java class com.company.guestbook.model.Recipient, and Java type class com.company.guestbook.model.Recipient, and MIME media type application/json was not found.
    The registered message body readers compatible with the MIME media type are:
    application/json ->
      com.sun.jersey.json.impl.provider.entity.JSONJAXBElementProvider$App
      com.sun.jersey.json.impl.provider.entity.JSONRootElementProvider$App
      com.sun.jersey.json.impl.provider.entity.JSONListElementProvider$App
    */* ->
      com.sun.jersey.core.impl.provider.entity.FormProvider
      ...

1 个答案:

答案 0 :(得分:0)

这应该在编译时失败,因为您的方法实现没有返回对象(即,它是void返回)但方法签名表示返回了Response对象。您的实现只是将Recipient对象打印到标准输出(可能最终会出现在容器的日志文件中)。

我看到你没有使用Maven来管理你的依赖项(这很好),但你是否添加了Jersey所需的依赖项?例如,这个error report看起来与你的相似......