0

我正在使用 Jersey 将 Java 对象编组为 JSON,如下所示:

import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.io.IOException;

@POST
@Consumes({MediaType.APPLICATION_JSON})
@Path("/test")
public Response replay(String input) throws IOException {
    return Response.ok().entity(new MyClass()).build();
}

我收到以下异常:

javax.ws.rs.WebApplicationException: com.sun.jersey.api.MessageException: A message body writer for Java class com.company.MyClass, and Java type class com.company.MyClass, and MIME media type application/octet-stream was not found.

我知道这里的解决方案是:

  1. 添加jackson-jaxrs-json-provider依赖
  2. 利用com.sun.jersey.api.json.POJOMappingFeature

POJOMappingFeature通常配置在web.xml. 对于注释驱动且不使用的应用程序是否有替代方案web.xml

谢谢

4

1 回答 1

2

您应该能够将其添加到您的 pom 文件中。

    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-moxy</artifactId>
    </dependency>

如果您从 Jersey maven 原型创建项目,通常会注释掉此依赖项。

com.sun.jersey.api.json.POJOMappingFeature 仅适用于 Jersey 的 1.* 版本。从 Jersey 的版本 1 到 2,包名称从 com.sun.* 更改为 org.glassfish.*。

于 2017-11-21T14:08:43.027 回答