Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带有嵌入式Jetty的Jersey-找不到MessageBodyWriter应用程序/json_Java_Json_Jersey - Fatal编程技术网

Java 带有嵌入式Jetty的Jersey-找不到MessageBodyWriter应用程序/json

Java 带有嵌入式Jetty的Jersey-找不到MessageBodyWriter应用程序/json,java,json,jersey,Java,Json,Jersey,我试图用Jersey将POJO作为JSON返回,但出现以下错误: 但是,当我运行应用程序时,我得到: SEVERE: MessageBodyWriter not found for media type=application/json, type=class com.uk.jacob.model.Person, genericType=class com.uk.jacob.model.Person. 我有以下资源 @Path("") public class TestResponse {

我试图用Jersey将POJO作为JSON返回,但出现以下错误:

但是,当我运行应用程序时,我得到:

SEVERE: MessageBodyWriter not found for media type=application/json, type=class com.uk.jacob.model.Person, genericType=class com.uk.jacob.model.Person.
我有以下资源

@Path("")
public class TestResponse {

    @GET
    @Path("hello")
    @Produces(MediaType.APPLICATION_JSON)
    public Response paramMethod() {
        CacheControl control = new CacheControl();
        control.setMaxAge(60);

        Person jacob = new Person("Jacob");

        return Response
                .ok(jacob)
                .cacheControl(control)
                .build();
    }
}
和一个简单的人POJO

public class Person {
    private String firstName;

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

    public String getFirstName(){
        return firstName;
    }
}
使用以下嵌入式Jetty配置

public static void main(String[] args) {

        ServletContextHandler context = new ServletContextHandler(ServletContextHandler.NO_SESSIONS);
        context.setContextPath("/");

        String webPort = System.getenv("PORT");
        if(webPort == null || webPort.isEmpty()) {
            webPort = "3000";
        }

        Server jettyServer = new Server(Integer.valueOf(webPort));
        jettyServer.setHandler(context);

        ServletHolder jerseyServlet = context.addServlet(ServletContainer.class, "/*");
        jerseyServlet.setInitOrder(0);

        jerseyServlet.setInitParameter("jersey.config.server.provider.packages", "com.uk.jacob.api");
        jerseyServlet.setInitParameter("com.sun.jersey.api.json.POJOMappingFeature", "true");

        try {
            jettyServer.start();
            jettyServer.join();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            jettyServer.destroy();
        }
    }
正如您在上面看到的,我已经启用了POJOMappingFeature

    jerseyServlet.setInitParameter("com.sun.jersey.api.json.POJOMappingFeature", "true");

POJOMappingFeature
适用于Jersey 1。对于Jersey 2,您应该添加以下依赖项

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-json-jackson</artifactId>
    <version>${jersey2.version}</version>
</dependency>

POJOMappingFeature
适用于Jersey 1。对于Jersey 2,您应该添加以下依赖项

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-json-jackson</artifactId>
    <version>${jersey2.version}</version>
</dependency>

我还必须添加数据绑定依赖项。我还必须添加数据绑定依赖项。com.fasterxml.jackson.core jackson数据绑定