Ну, я не мог сделать вышеупомянутую работу веб-проекта. Но я продолжил проводить исследование в области JAX-RS, и я столкнулся с учебным руководством Stormpath. Я думаю, кто бы ни пытается изучить, как REST, JSON и Джерси сотрудничают, должен наблюдать это.
посмотрите ссылки ниже для их презентации и демонстрационного проекта REST на GitHub.
https://www.youtube.com/watch? v=sVvL12BnIyQ
https://github.com/stormpath/todos-jersey
Теперь я могу сравнить выше проекта и видеть то, что все вещи я сделал неправильно.
Я смог зафиксировать его jersey-media-json-jackson
установки, Добавляет зависимость к pom.xml
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<scope>runtime</scope>
</dependency>
Необходимо создать пустого конструктора, потому что JAX-RS инициализирует классы... У Вашего конструктора не должно быть аргументов:
@XmlRootElement
public class Student implements Serializable {
public String first_name;
public String last_name;
public String getFirst_name() {
return first_name;
}
public void setFirst_name(String first_name) {
this.first_name = first_name;
}
public String getLast_name() {
return last_name;
}
public void setLast_name(String last_name) {
this.last_name = last_name;
}
public Student()
{
first_name = "Fahad";
last_name = "Mullaji";
}
public Student()
{
}
}
Я был в той же ситуации, где
- я был не Знаток использования или Муравей,
- я закончил это учебное руководство Vogella на Джерси ,
- и я добирался MessageBodyWriter
ошибка при попытке использовать @Produces(MediaType.APPLICATION_JSON)
.
Этот ответ @peeskillet решает проблему - необходимо использовать Jackson *.jar файлы, которые доступны от страница . FasterXML Jackson Download, в которой Вы будете нуждаться эти core
файлы, а также эти jaxrs
файлы.
я добавил их к моему WebContent/WEB-INF/lib
папка, где я имею своего Джерси *.jar файлы на вышеупомянутое учебное руководство и сделал небольшое изменение файла web.xml ниже (снова, как первоначально совместно использовано @peeskillet):
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>
your.other.package.here, com.fasterxml.jackson.jaxrs.json
</param-value>
важная часть, являющаяся com.fasterxml.jackson.jaxrs.json
.
Некомментарий ниже кода помог
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-moxy</artifactId>
</dependency>
, который присутствовал в pom.xml в моем основанном на знатоке проекте, разрешил эту ошибку для меня.
Ниже должен быть в Вашем pom.xml выше других jersy/jackson зависимостей. В моем случае это как ниже jersy-клиентского dep-cy и я получил MessageBodyWriter, не найденный для медиа type=application/json.
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.25</version>
</dependency>
Для преодоления этой проблемы пробуют следующее. Работавший для меня.
Добавляют следующую зависимость в pom.xml
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.25</version>
</dependency>
И удостоверяются , Образцовый класс содержит никакой конструктор аргумента
public Student()
{
}
Я думаю, можете быть Вы, должен попытаться преобразовать данные в json формат. Это может быть сделано при помощи gson lib. Попробуйте что-то как ниже.
я не знаю, что это - лучшие решения или не, но Вы могли сделать это этот путь. Это работало на меня
пример: '
@GET
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public Response info(@HeaderParam("Accept") String accept) {
Info information = new Info();
information.setInfo("Calc Application Info");
System.out.println(accept);
if (!accept.equals(MediaType.APPLICATION_JSON)) {
return Response.status(Status.ACCEPTED).entity(information).build();
} else {
Gson jsonConverter = new GsonBuilder().create();
return Response.status(Status.ACCEPTED).entity(jsonConverter.toJson(information)).build();
}
}