Jackson ObjectMapper()构造函数抛出NoSuchMethod

Moj*_*ojo 23 java json nosuchmethoderror jackson

我正在使用Jackson示例代码反序列化POJO:

ObjectMapper m = new ObjectMapper();
Run Code Online (Sandbox Code Playgroud)

该行抛出NoSuchMethodError:

Exception in thread "main" java.lang.NoSuchMethodError: org.codehaus.jackson.type.JavaType.<init>(Ljava/lang/Class;)V
    at org.codehaus.jackson.map.type.TypeBase.<init>(TypeBase.java:15)
    at org.codehaus.jackson.map.type.SimpleType.<init>(SimpleType.java:45)
    at org.codehaus.jackson.map.type.SimpleType.<init>(SimpleType.java:40)
    at org.codehaus.jackson.map.type.TypeBindings.<clinit>(TypeBindings.java:18)
    at org.codehaus.jackson.map.type.TypeFactory._fromType(TypeFactory.java:525)
    at org.codehaus.jackson.map.type.TypeFactory.type(TypeFactory.java:61)
    at org.codehaus.jackson.map.ObjectMapper.<clinit>(ObjectMapper.java:179)
    at com.me.util.ctrl.BillingJobStatus.fromJson(BillingJobStatus.java:37)
Run Code Online (Sandbox Code Playgroud)

我不明白

ska*_*man 28

我猜你的杰克逊JAR不同步.本JavaType类是jackson-coreJAR,和ObjectMapper类是在jackson-mapper.

确保它们都是相同的版本.

  • 是的,这是一个不幸但常见的陷阱,很容易发生,特别是在使用Maven时. (6认同)

小智 5

我有同样的问题.核心jar是1.7.1,而映射器是1.8.1.注意:要为maven修复此问题,我添加了一个排除项并下拉了正确的版本.

        <exclusions>
            <exclusion>
                <groupId>org.codehaus.jackson</groupId>
                <artifactId>jackson-mapper-asl</artifactId>
            </exclusion>
        </exclusions>
Run Code Online (Sandbox Code Playgroud)


wil*_*ing 5

这里的技巧是将jackson从使用它的依赖项中排除.

要检查哪些依赖项导入它,您可以使用以下maven命令:

mvn dependency:tree -Dincludes=org.codehaus.jackson