Wildfly和Jackson:LinkageError

时间:2014-03-04 21:48:23

标签: jboss jackson wildfly

我正在尝试配置jboss wildfly 8以使用Jackson for JSON。所以我添加了

<dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-jackson-provider</artifactId>
    <version>3.0.6.Final</version>
    <type>jar</type>
</dependency>

到我的耳朵项目。但在部署时,我得到以下错误:

  

引起:java.lang.LinkageError:加载器约束违规:何时   解决被覆盖的方法   “org.jboss.resteasy.plugins.providers.jackson.ResteasyJacksonProvider $代理$ _ $ $ WeldClientProxy.disable(Lorg / Codehaus的/杰克逊/地图/ DES   erializationConfig $特征; Z)Lorg / Codehaus的/杰克逊/ JAXRS / JacksonJsonProvider;”   类加载器(org / jboss / modules / ModuleClassLoader的实例)   目前的班级,   组织/ JBoss的/ RestEasy的/插件/供应商/杰克逊/ ResteasyJacksonPr   ovider $ Proxy $ $$ WeldClientProxy及其超类加载器(实例   of org / jboss / modules / ModuleClassLoader),有不同的Class对象   对于类型   sy.plugins.providers.jackson.ResteasyJacksonProvider $代理$ 的$$ _ WeldClientProx   y.disable(Lorg / Codehaus的/杰克逊/图/ DeserializationConfig $特征; Z)Lorg / Codehaus的/杰克逊/ JAXRS / JacksonJsonProvider;   用于签名

版本3.0.6与Wildfly不兼容吗?我怎么知道哪个版本有效?我也试过2.3.7和1.1,但总是一样的错误。

编辑:

我有一个带pojos的ejb模块。在这里,我有依赖:

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>2.2.3</version>
        <scope>provided</scope>
        <type>jar</type>
    </dependency>

所以看起来非常像杰克逊2给我。

在我耳边,我有以下依赖:

<dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jackson-provider</artifactId>
        <version>3.0.6.Final</version>
        <type>jar</type>
        <scope>provided</scope>
</dependency>

我现在需要resteasy-jackson2-provider吗?我现在需要jboss-deployment-structure.xml吗?

2 个答案:

答案 0 :(得分:7)

WildFly 8已经包括杰克逊。使用<scope>provided</scope>标记依赖项。然后,您需要根据jboss-deployment-structure.xml为您的部署添加documentation

<jboss-deployment-structure>
    <deployment>
        <exclusions>
           <module name="org.jboss.resteasy.resteasy-jackson-provider"/>
        </exclusions>
        <dependencies>
            <module name="org.jboss.resteasy.resteasy-jackson2-provider" services="import"/>
        </dependencies>
    </deployment>
</jboss-deployment-structure> 

答案 1 :(得分:1)

导入<module name = "com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider" />时,它对我有用,因为<module name = "org.jboss.resteasy.resteasy-jackson2-provider" services = "Import" />不导出

<jboss-deployment-structure>
      <sub-deployment name="erp-integrator.jar">
        <exclusions>
           <module name="org.jboss.resteasy.resteasy-jackson-provider"/>
        </exclusions>
        <dependencies>
            <module name="org.jboss.resteasy.resteasy-jackson2-provider" services="import" />
            <module name="com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider" />
        </dependencies>
    </sub-deployment>
</jboss-deployment-structure>