RESTEasy Не удалось найти MessageBodyWriter для объекта ответа типа: Тип носителя: приложение / JSON - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь реализовать конечную точку отдыха, используя отдых легко. Это конечная точка GET,

    @Controller
@Path("/api")
public class TestController {

    private static final Log LOG = LogFactory.getLog(TestController .class);


    @GET
    @Path("/test")
    @Produces(MediaType.APPLICATION_JSON)
    public Response getTest() {

        LOG.info(" inside test");

        Response r = null;
        try {

         Test test = new Test();
         test.setId(1L);
         test.setName("test");
         test.setAge("20");

         r = Response.ok(test).build();

        } catch (Exception e){
            LOG.error(e);
        }

        return r;
    }
}

Ниже приведен класс сущностей, который я пытаюсь вернуть

@XmlRootElement
public class Test {

    @XmlElement(name = "id")
    private Long id;

    @XmlElement(name = "name")
    private String name;

    @XmlElement(name = "age")
    private String age;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }
}

Ошибка ниже, когда конечная точка вызывается из оставшегося клиента.

Could not find MessageBodyWriter for response object of type: com.package.Test of media type: application/json

Это несколько зависимостей, которые я добавил, которые, я считаю, были бы полезны для этого.

httpclient-4.0.3.jar
httpcore-4.0.1.jar
jackson-core-asl-1.6.3.jar
jackson-jaxrs-1.9.13.jar
jackson-jaxrs-json-provider-2.2.1.jar
jackson-mapper-asl-1.6.3.jar
jackson-xc-1.6.3.jar
jaxrs-api-3.0.12.Final.jar
jboss-logging-3.3.1.Final.jar
jcip-annotations-1.0.jar
resteasy-jaxb-provider-3.1.0.Final.jar
resteasy-jettison-provider-2.3.1.GA.jar
resteasy-spring-2.2.1.GA.jar
scannotation-1.0.3.jar

У кого-нибудь есть идеи, почему возникает такая ошибка. Конечная точка способна вернуть простую строку в качестве ответа.

1 Ответ

0 голосов
/ 17 апреля 2020

jackson-jaxrs-json-provider содержит MessageBodyReader/Writer для обработки преобразования JSON / POJO. Но вам все равно нужно зарегистрировать JacksonJaxbJsonProvider в вашем приложении.

Если вы используете RESTEasy, вы также можете просто добавить зависимость resteasy-jackson-provider в свой проект, и она автоматически зарегистрирует JacksonJaxbJsonProvider, чтобы вы могли не нужно явно делать это. Зависимость также добавляет несколько других полезных элементов. Поэтому лучше всего добавить зависимость.

...