2013-01-16 10 views
7

Ho un servizio di riposo (post) che consuma (application/json) e produce (application/json). Il singolo parametro per questo servizio è un oggetto java con annotazione.RESTEasy: Impossibile trovare il writer per tipo di contenuto application/json type

Sto utilizzando org.jboss.resteasy.client.ClientRequest per inviare la richiesta al servizio. Tuttavia, sto ricevendo questa eccezione nel client end e l'eccezione:

non è stato in grado di trovare il writer per tipo di contenuto application/tipo json.

Ciò significa che mi mancano alcuni vasi di libreria o devo scrivere il mio autore per l'applicazione/json?

Sto usando RESTEasy 2.3.3.Final

Qui sono varie dipendenze ho aggiunto al mio pom che penso siano probabilmente correlati:

<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> 

Matt

+0

possibile duplicato di http://stackoverflow.com/questions/3630827/why-writer-for-media-type-application-json-missing –

+0

La differenza è ho aggiunto la dipendenza e non funziona – tamuren

+0

Quale applicazione server stai distribuendo anche tu? Potrebbe essere necessario includere esplicitamente i JAR di Jackson nel tuo POM. – Perception

risposta

3
<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> 

Questo è solo più che abbastanza.

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

13

Se si prevede di utilizzare le versioni più recenti di RESTEasy che implementano JAX-RS 2.0, le seguenti dipendenze dovrebbero risolvere il problema:

<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> 
1

Sto usando tutte le librerie incluse (progetto maven), ma ancora quando si esegue come applicazione standalone, generata da maven-assembly-plugin, ho ottenuto lo stesso errore, ma quando si esegue da IDE funziona senza problemi.

Ho anche avuto problemi con la registrazione log4j2 come lo era completamente rotto durante l'esecuzione come applicazione vaso grasso standalone (in IDE funziona perfettamente), quindi prima ho concentrarsi sulla soluzione questo:

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

Così ho risolto problema con provider mancante e log4j2 eseguendo la migrazione da maven-assembly-plugin a maven-shade-plugin

+1

Ho anche avuto lo stesso problema con l'applicazione standalone che manca il provider JSON.Il problema era che il plug-in di assembly Maven stava sovrascrivendo il file META-INF/services responsabile della registrazione del provider JAX-RS, perché faceva parte di diversi archivi, da cui dipendono. Questo mi ha aiutato a risolvere il mio problema: https://stackoverflow.com/questions/18538802/java-runtime-exception-could-not-find-writer-for-content-type-when-building-u – ivko

1

Se si applicano tutte le dipendenze necessarie nel progetto, verificare se la classe implementa Serializable.

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

Forse risolve il problema.

Problemi correlati