当前位置: 首页 > 知识库问答 >
问题:

带有Grizzly的泽西:找不到media type=application/json的MessageBodyWriter

上官淮晨
2023-03-14
mvn archetype:generate -DarchetypeArtifactId=jersey-quickstart-grizzly2 -DarchetypeGroupId=org.glassfish.jersey.archetype
<dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-moxy</artifactId>
</dependency>
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Person {

  private String firstName;
  private String lastName;

  public Person(String firstName, String lastName) {
      this.firstName = firstName;
      this.lastName = lastName;
  }

  public String getFirstName() {
      return firstName;
  }

  public void setFirstName(String firstName) {
      this.firstName = firstName;
  }

  public String getLastName() {
      return lastName;
  }

  public void setLastName(String lastName) {
      this.lastName = lastName;
  }
}
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.

我一直无法弄清楚我错过了什么(我已经经历了许多建议的答案,但都无济于事),可以使用另一套眼睛/视角。

共有1个答案

董子平
2023-03-14

鉴于MOXy是JAXB的衍生物,而JAXB的类型需要no-arg(默认)构造函数,因此在模型类中应该有一个no-arg构造函数。

另见

  • 为什么JAXB需要一个no arg构造函数来进行编组?
 类似资料:
  • 我正在尝试使用Jersey作为框架实现一个小的REST API,原则上代码工作正常,但是当我尝试对哈希表进行“GET”时,我得到以下错误: 这是有问题的一行: 这就是我实现服务的方式: pom公司。xml(maven依赖项) 服务器端配置: 在客户端中注册杰克逊时出错: 新类别: 术语类: 有人能帮我退回地图吗?

  • 每次我尝试调用REST服务时,都会收到以下错误消息 以下是REST服务(剥离到相关部分): JSON类 波姆。xml(有趣的部分) 我的设置是: JDK8/JEE7(build 1.8.0_51-b16) 这就是我迄今为止所尝试的: 找不到媒体类型为application/json的MessageBodyWriter- 我仍然认为这是一个依赖问题。但是我不知道会有什么问题。

  • 我对web服务非常陌生,所以我从基本示例开始。这与文件上传有关。我正在为非maven开发人员使用最新(2.17)版本的Jersey捆绑包。它指出: 捆绑包包含JAX-RS 2.0 API jar、所有核心泽西模块jar以及所有必需的第3方依赖项 .问题是我不能编译这部分: Jersey 2.17捆绑包中似乎不存在FormDataParam,尽管docs表示存在。2.17捆绑包是否不完整?如何解决此

  • 我正在尝试遵循Jersey文档,以便在发生错误时启用非200响应(https://Jersey.java.net/documentation/latest/representations.html#D0E3586) 我的代码看起来像: 不幸的是,这会产生以下错误: [2015-02-01T16:13:02.157+0000][glassfish 4.1][严重][][org.glassfish.j

  • 下面的代码有效 下面的代码是抛出错误 低于异常 [[FATAL]找不到public javax类型参数的注入源。ws。rs.core。回复com。特里姆布尔。帕斯。大声点。metricscollector。资源MetricsResource。索引1处的PostMetricData(java.lang.String,java.lang.String)。;source='ResourceMethod{

  • 问题内容: 在尝试找出我的问题之后,我终于决定问您如何解决我的问题。我见过不同的人有相同的问题,我尝试了所有建议他们做的事情,但没有任何帮助解决我的问题。所以基本上我有一个使用Jersey进行构建的RESTful服务。对于我的客户,我想返回JSON格式的对象。我通读了不同的教程,并决定使用jersey- json-1.8库是有意义的。我像往常一样将所有内容添加到我的项目中,并尝试运行它,但是每次调