Я получаю эту ошибку, когда пытаюсь увидеть ответ JSON в моем браузере. Я читал много сообщений о стеке, которые похожи, но ничего не работает. Браузер возвращает ошибку 500. Intellij IDEA возвращает ошибку «Error MessageBodyWriter не найден для типа носителя = application / json». Вот мой код:
pom.xml
<?xml version = "1.0" encoding = "UTF-8"?>
<project xmlns = "http://maven.apache.org/POM/4.0.0"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>groupId</groupId>
<artifactId>app</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.glassfish.jersey</groupId>
<artifactId>jersey-bom</artifactId>
<version>${jersey.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.ext</groupId>
<artifactId>jersey-entity-filtering</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
<properties>
<jersey.version>2.23.2</jersey.version>
</properties>
</project>
web.xml:
<?xml version = "1.0" encoding = "UTF-8"?>
<web-app xmlns = "http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version = "3.1">
<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>app</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
MessageService:
package app.resource;
import app.model.Message;
import app.service.MessageService;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import java.util.List;
@Path("messages")
public class MessageResource {
MessageService messageService = new MessageService();
@GET
@Produces(MediaType.APPLICATION_JSON)
public List<Message> getMessages()
{
return messageService.getAllMessages();
}
@GET
@Path("/{messageId}")
@Produces(MediaType.APPLICATION_JSON)
public Message test(@PathParam("messageId") long id)
{
return messageService.getMessage(id);
}
}
Класс сообщения:
package app.model;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.Date;
@XmlRootElement
public class Message {
private long id;
private String message;
private Date created;
private String author;
public Message()
{
}
public Message(long id, String message, String author) {
this.id = id;
this.message = message;
this.created = new Date();
this.author = author;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public Date getCreated() {
return created;
}
public void setCreated(Date created) {
this.created = created;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
}
23 мая 2018 г. 01: 51: 45.744 СЕРЬЕЗНО [http-nio-8080-exec-6] org.glassfish.jersey.message.internal.WriterInterceptorExecu tor $ TerminalWriterIn terceptor.aroundWrit eTo MessageBodyWriter не найден для типа носителя = приложение / json, тип = класс java.util.ArrayList, genericType = java.util.List <app.model.Message>. 23 мая 2018 г. 01: 51: 47.896 ИНФОРМАЦИЯ [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Каталог развертывания веб-приложения D: \ Java Projects \ SimpleWebProject \ apache-tomcat-8.0.50 \ webapps \ менеджер
23 мая 2018 г. 01: 51: 48.126 ИНФОРМАЦИЯ [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Развертывание каталога веб-приложений D: \ Java Projects \ SimpleWebProject \ apache-tomcat-8.0.50 \ webapps \ менеджер закончил за 230 мс
Это все, что я получаю




Старый пост, но я подумал, что это может кому-то помочь. Я могу столкнуться с той же проблемой, играя с Apache Tomcat 9.0.36 и Jersey. Эта ошибка возникает из-за отсутствия зависимости от носителя. Вот мои зависимости Jersey POM, которые у меня сработали:
<!-- Jersey dependencies -->
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>2.29.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.29.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.inject</groupId>
<artifactId>jersey-hk2</artifactId>
<version>2.29.1</version>
</dependency>
<!-- Jersey media type files, including XML -->
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-jaxb</artifactId>
<version>2.29.1</version>
</dependency>
<!-- Jersey JSON entity providers -->
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.29.1</version>
</dependency>
Вы можете узнать больше о типах носителей, поддерживаемых Джерси, в их документация.
Добавьте соответствующую часть трассировки стека, если она есть. Посмотри журналы.