Java Maven、Jersey、JSON、Tomcat,未找到媒体类型=应用程序/JSON的错误消息BodyWriter

Java Maven、Jersey、JSON、Tomcat,未找到媒体类型=应用程序/JSON的错误消息BodyWriter,java,json,rest,maven,tomcat,Java,Json,Rest,Maven,Tomcat,当我试图在我的浏览器中看到JSON响应时,我遇到了这个错误。我读了很多关于stack witch的帖子,它们都很相似,但都不起作用。浏览器返回“错误500”。Intellij IDEA返回错误“未找到媒体类型=应用程序/json的错误消息BodyWriter”。这是我的密码: pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"

当我试图在我的浏览器中看到JSON响应时,我遇到了这个错误。我读了很多关于stack witch的帖子,它们都很相似,但都不起作用。浏览器返回“错误500”。Intellij IDEA返回错误“未找到媒体类型=应用程序/json的错误消息BodyWriter”。这是我的密码:

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>

这是一篇老文章,但我觉得它可以帮助别人。在使用ApacheTomcat 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>

org.glassfish.jersey.core

.

如果有堆栈跟踪,则添加堆栈跟踪的相关部分。查看日志。2018年5月23日01:51:45.744严重[http-nio-8080-exec-6]org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.aroundWriteToMessageBodyWriter未找到媒体类型=应用程序/json,类型=类java.util.ArrayList,genericType=java.util.List。2018年5月23日01:51:47.896信息[localhost-startStop-1]org.apache.catalina.startup.HostConfig.deployDirectory部署web应用程序目录D:\Java Projects\simpleweb项目\apache-tomcat-8.0.50\webapps\manager23-May-2018 01:51:48.126信息[localhost-startStop-1]org.apache.catalina.startup.HostConfig.deployDirectory web应用程序目录的部署D:\Java Projects\simpleweb项目\apache-tomcat-8.0.50\webapps\manager已在230毫秒内完成这是我得到的全部
 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;
    }
}
<!-- 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>