2013-01-16 37 views
7

我有一個使用(application/json)並生成(application/json)的寧靜服務(post)。該服務的單個參數是一個帶註釋的java對象。RESTEasy:找不到內容類型應用程序/ json類型的作者

我正在使用org.jboss.resteasy.client.ClientRequest將請求發送到服務。但是,我在客戶端和異常中遇到此異常:

找不到內容類型應用程序/ json類型的編寫器。

這是否意味着我缺少一些庫jars或我必須爲application/json編寫自己的作者?

我使用RestEasy的2.3.3.Final

以下是各種依賴我加入到我的POM,我認爲很可能相關:

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

馬特

+0

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

+0

可能的重複區別是我添加了依賴關係,它不起作用 – tamuren

+0

什麼應用程序你也在部署服務器嗎?您可能需要明確將Jackson JAR包含在您的POM中。 – Perception

回答

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> 

這是隻是綽綽有餘。

參考這裏:http://howtodoinjava.com/2012/12/15/how-to-write-restful-webservices-using-spring-3-mvc/

13

如果您打算使用實現JAX-RS 2.0 RestEasy的更新版本,以下依賴性應該解決您的問題:

<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

我使用的所有庫包括:( maven項目),但仍然作爲獨立應用程序運行時,由maven-assembly-plugin生成,我得到同樣的錯誤,但從IDE運行時,它的工作沒有問題。

我也有問題log4j2記錄,因爲它作爲獨立的脂肪罐子應用程序運行的時候被徹底打破(在IDE完美的作品),所以我首先着眼於解決這個:

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

所以我解決缺少提供程序和log4j2的問題通過從maven-assembly-plugin遷移到maven-shade-plugin

+1

我也有與缺少JSON提供程序的獨立應用程序相同的問題。問題在於Maven程序集插件覆蓋了負責註冊JAX-RS提供程序的META-INF/services文件,因爲它是我依賴的幾個歸檔文件的一部分。這幫助我解決了我的問題: https://stackoverflow.com/questions/18538802/java-runtime-exception-could-not-find-writer-for-content-type-when-building-u – ivko

1

如果在項目中應用了所有必需的依賴項,請檢查您的類是否實現Serializable。

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

也許它解決了你的問題。

相關問題