RESTEasy: Could not find writer for content-type a

2020-01-29 10:20发布

I have a restful service (post) that consumes (application/json) and produces (application/json). The single param for this service is an annotated java object.

I am using org.jboss.resteasy.client.ClientRequest to send the request to the service. However, I am getting this exception in the client end and the exception:

could not find writer for content-type application/json type.

Does this mean that I am missing some library jars or I have to write my own writer for application/json?

I am using resteasy 2.3.3.Final

Here are various dependencies I added to my pom that I think are probably related:

    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jaxrs</artifactId>
        <version>2.3.3.Final</version>
    </dependency>

    <dependency>
        <groupId>com.fasterxml.jackson.jaxrs</groupId>
        <artifactId>jackson-jaxrs-json-provider</artifactId>
        <version>2.0.5</version>
    </dependency>

    <dependency>
       <groupId>org.jboss.resteasy</groupId>
       <artifactId>resteasy-jaxb-provider</artifactId>
       <version>2.3.4.Final</version>
    </dependency>

    <dependency>
       <groupId>org.jboss.resteasy</groupId>
       <artifactId>resteasy-jackson-provider</artifactId>
       <version>2.3.4.Final</version>
    </dependency>

    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-core-asl</artifactId>
        <version>1.3.0</version>
    </dependency>

    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-mapper-asl</artifactId>
        <version>1.3.0</version>
    </dependency>

4条回答
神经病院院长
2楼-- · 2020-01-29 10:35

I am using all libraries included (maven project), but still when running as standalone application, generated by maven-assembly-plugin, I got same error, but when running from IDE it works without problem.

I also had problem with log4j2 logging as it was completely broken when running as standalone fat jar application (in IDE works perfectly), so I first focus on solving this:

Log4j2 configuration not found when running standalone application builded by shade plugin

So I solved problem with missing provider and log4j2 by migrating from maven-assembly-plugin to maven-shade-plugin

查看更多
闹够了就滚
3楼-- · 2020-01-29 10:38

If you have all necessary dependencies applied in your project, check if your class implements Serializable.

@XmlRootElement
public class MyClass implements Serializable {
    //filds
}

Maybe it solve your problem.

查看更多
趁早两清
4楼-- · 2020-01-29 10:40
<dependency>
      <groupId>org.codehaus.jackson</groupId>
      <artifactId>jackson-mapper-asl</artifactId>
      <version>${jackson-mapper-asl.version}</version>
      <scope>runtime</scope>
   </dependency>

   <dependency>
      <groupId>javax.xml.bind</groupId>
      <artifactId>jaxb-api</artifactId>
      <version>${jaxb-api.version}</version>
      <scope>runtime</scope>
   </dependency>

This is just more than enough.

Refer here: http://howtodoinjava.com/2012/12/15/how-to-write-restful-webservices-using-spring-3-mvc/

查看更多
走好不送
5楼-- · 2020-01-29 10:44

If you plan to use newer versions of resteasy that implement JAX-RS 2.0, the following dependencies should solve your problem:

<dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-jaxrs</artifactId>
    <version>3.0.5.Final</version>
</dependency>

<dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>jaxrs-api</artifactId>
    <version>3.0.5.Final</version>
</dependency>

<dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-jaxb-provider</artifactId>
    <version>3.0.5.Final</version>
</dependency>

<dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-jackson2-provider</artifactId>
    <version>3.0.5.Final</version>
</dependency>
查看更多
登录 后发表回答