55 votes

Le rédacteur du corps du message pour la classe Java n'a pas été trouvé

Je suis novice dans l'utilisation de JAX-RS et j'ai écrit un exemple d'application qui produit un objet json, mais je reçois une exception. Voici mon code :

@Path("/hello")
public class HelloWorldService {

    @GET
    @Path("/query/{artist_id}")
    @Produces("application/json")
    public Data getMsg(@PathParam("artist_id") int artist_id,
                            @QueryParam("from") int from,
                            @QueryParam("to") int to) {
        Data d=new Data();
        d.setName("Mateen");
        d.setRoll(77);
        return d;

    }

}

Mes données sont simplement une classe POJO :

@XmlRootElement
public class Data {
    private int roll;
    private String name;
    public int getRoll() {
        return roll;
    }
    public void setRoll(int roll) {
        this.roll = roll;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

J'obtiens une exception :

javax.ws.rs.WebApplicationException: 
    com.sun.jersey.api.MessageException: 
    A message body writer for Java class com.abc.data.Data, 
    and Java type class com.abc.data.Data, 
    and MIME media type application/json was not found

Qu'est-ce que je fais de travers ?

0 votes

[veuillez consulter cet article, vous devez enregistrer la capacité de Jersey à produire du JSON][1] [1] : stackoverflow.com/questions/5161466/

0 votes

0 votes

Pourquoi faut-il fournir @XmlRootElement sur le bean ?

0voto

Nir Sivan Points 45

J'ai eu le même problème : Un rédacteur de corps de message pour le type Java, classe java.lang.String, et le type de média MIME, application/json, n'a pas été trouvé.

Le problème est que la classe javax.ws.rs.ext.MessageBodyWriter était tirée de la classe

<dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-json-jackson</artifactId>
        <version>2.22.2</version>
    </dependency>

Il est entré en collision avec la même classe de :

    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-client</artifactId>
        <version>1.19.1</version>
    </dependency>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X