maven - Wildfly下加载Jackson JSR310的依赖冲突

标签 maven jackson wildfly wildfly-10

当我在 Wildfly 下使用 Jackson JSR310 模块解析 LocalDate 字段时,它失败并出现以下异常:

 java.lang.NoSuchMethodError: com.fasterxml.jackson.core.JsonParser.hasToken(Lcom/fasterxml/jackson/core/JsonToken;)Z

我正在使用 wildfly-javaee7-with-tools 进行依赖管理。我的 pom.xml 中有趣的部分:

<properties>
    <version.wildfly>10.0.0.Final</version.wildfly>
    <version.jackson>2.6.3</version.jackson>
</properties>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.wildfly.bom</groupId>
            <artifactId>wildfly-javaee7-with-tools</artifactId>
            <version>${version.wildfly}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jackson2-provider</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.datatype</groupId>
        <artifactId>jackson-datatype-hibernate5</artifactId>
        <version>${version.jackson}</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.datatype</groupId>
        <artifactId>jackson-datatype-jdk8</artifactId>
        <version>${version.jackson}</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.datatype</groupId>
        <artifactId>jackson-datatype-jsr310</artifactId>
        <version>${version.jackson}</version>
    </dependency>
</dependencies>

还有我的提供商:

@Provider
public class ObjectMapperProvider implements ContextResolver<ObjectMapper> {

    private final ObjectMapper objectMapper;

    public ObjectMapperProvider() {
        this.objectMapper = new ObjectMapper();
        objectMapper.registerModule(new Jdk8Module());
        objectMapper.registerModule(new JavaTimeModule());
        objectMapper.registerModule(new Hibernate5Module());
    }

    @Override
    public ObjectMapper getContext(Class<?> aClass) {
        return objectMapper;
    }

}

这显然看起来像是依赖冲突。然而,这是 mvn dependency:tree 的输出,并且 Jackson 相关的所有内容似乎都在 2.6.3 上。

[INFO] +- javax:javaee-web-api:jar:7.0:provided
[INFO] +- org.jboss.resteasy:resteasy-jackson2-provider:jar:3.0.14.Final:provided
[INFO] |  +- com.fasterxml.jackson.core:jackson-core:jar:2.6.3:compile
[INFO] |  +- com.fasterxml.jackson.core:jackson-databind:jar:2.6.3:compile
[INFO] |  +- com.fasterxml.jackson.core:jackson-annotations:jar:2.6.3:compile
[INFO] |  \- com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-prov ider:jar:2.6.3:provided
[INFO] |     +- com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:jar:2.6.3:provided
[INFO] |     \- com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.6.3:provided
[INFO] +- com.fasterxml.jackson.datatype:jackson-datatype-hibernate5:jar:2.6.3:compile
[INFO] +- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.6.3:compile
[INFO] +- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.6.3:compile

我也在 Wildfly 10.0.0.Final 服务器上运行,因此我不希望 10.0.0.Final pom 之间存在版本不匹配的情况.xml 以及服务器上提供的实际依赖项。

最佳答案

检查此文件夹并检查版本。 wildfly-10.0.0.Final\modules\system\layers\base\com\fasterxml\jackson\core\jacks‌​on-core\main. 我很确定您需要自己指定 jackson-core 2.6.3 依赖项,因为 org.jboss.resteasy:resteasy-jackson2-provider:jar:3.0.14.Final属于提供的范围,2.6.3 不存在于 Wildfly 10 中。

关于maven - Wildfly下加载Jackson JSR310的依赖冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38173460/

相关文章:

windows - 无法将Fabric8与Docker一起用于Windows

java - Akka Java API artifactId 版本控制?

java - Maven 没有正确地将加密密码传递给 nexus

java - JsonParseException,JSON 中不存在错误字符

java - 找不到类型[简单类型,类定义]的合适构造函数

java - 如何为maven项目创建新的maven Lifecycle作业?

java - 使用 Jackson 解析具有多个对象的 json 文件

java - 如何处理Spring Boot注释中的403禁止错误?

jboss - 此处不允许使用 Wildfly 子系统配置属性

java - 类型错误 : Cannot read property 'initLazy' of undefined?