Java Jersey with Grizzly:找不到媒体类型为application/json的MessageBodyWriter

Java Jersey with Grizzly:找不到媒体类型为application/json的MessageBodyWriter,java,json,maven,jersey-2.0,grizzly,Java,Json,Maven,Jersey 2.0,Grizzly,请对我耐心一点,我知道已经有这么多这样的问题了,我还没能解决我的问题,这些问题看起来很基本,我也不知道我遗漏了什么(我花了几个小时试图解决这个问题)。我使用了以下maven原型来生成项目: mvn archetype:generate -DarchetypeArtifactId=jersey-quickstart-grizzly2 -DarchetypeGroupId=org.glassfish.jersey.archetype 在pom.xml文件中,我取消了moxy依赖项的注释以支持JSO

请对我耐心一点,我知道已经有这么多这样的问题了,我还没能解决我的问题,这些问题看起来很基本,我也不知道我遗漏了什么(我花了几个小时试图解决这个问题)。我使用了以下maven原型来生成项目:

mvn archetype:generate -DarchetypeArtifactId=jersey-quickstart-grizzly2 -DarchetypeGroupId=org.glassfish.jersey.archetype
在pom.xml文件中,我取消了moxy依赖项的注释以支持JSON

<dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-moxy</artifactId>
</dependency>
MyResource.java如下所示:

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("myresource")
public class MyResource {

  @Path("/person")
  @GET
  @Produces(MediaType.APPLICATION_JSON)
  public Person getPerson() {
      return new Person("FistName","LastName");
  }

}
然后启动应用程序并发出以下命令以检索人员:

http://localhost:8080/myapp/myresource/person
安装看起来很简单,但这不起作用,以下情况除外:

org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor aroundWriteTo SEVERE: MessageBodyWriter not found for media type=application/json, type=class jersey.grizzly.Person, genericType=class jersey.grizzly.Person.

我还没有弄清楚我缺少的是什么(并且已经阅读了许多建议的答案,但都没有结果),可以使用另一组眼睛/透视图。

如果MOXy是JAXB的派生,并且JAXB的类型不需要arg(默认)构造函数,那么您的模型类中应该有一个无arg构造函数

另请参见


我知道读者需要一个默认构造函数,但我不确定作者是谁。您可以尝试在模型类中添加默认构造函数。谢谢@peeskillet,这就是问题所在。我真不敢相信我被这个问题困住了。既然答案在评论中,我该如何将其标记为已回答@peeskillet你想让这个评论成为一个答案,所以我关闭它?(除非在评论中有其他方法达到同样的效果)
org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor aroundWriteTo SEVERE: MessageBodyWriter not found for media type=application/json, type=class jersey.grizzly.Person, genericType=class jersey.grizzly.Person.