杰克逊抛出了那样的错误

时间:2016-03-10 19:24:22

标签: java rest maven spring-mvc jackson

我有以下课程,我将从春季休息服务器返回

public class Message {
    private String name;
    private String text;

    public Message(String name, String text) {
        this.name = name;
        this.text = text;
    }

    public String getName() {
        return name;
    }

    public String getText() {
        return text;
    }
}

当我尝试访问api

时出现以下错误
g.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.type.TypeFactory.constructType(Ljava/lang/reflect/Type;Ljava/lang/Class;)Lcom/fasterxml/jackson/databind/JavaType;
    org.springframework.web.servlet.DispatcherServlet.triggerAfterCompletionWithError(DispatcherServlet.java:1302)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:977)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:969)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:860)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:845)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

这是我的杰克逊映射树通过mvn dependency:tree | grep jackson

[INFO] +- org.codehaus.jackson:jackson-mapper-asl:jar:1.9.9:compile
[INFO] |  \- org.codehaus.jackson:jackson-core-asl:jar:1.9.9:compile
[INFO] \- com.fasterxml.jackson.core:jackson-databind:jar:2.7.0:compile
[INFO]    +- com.fasterxml.jackson.core:jackson-annotations:jar:2.7.0:compile
[INFO]    \- com.fasterxml.jackson.core:jackson-core:jar:2.7.0:compile

这是我在pom.xml中的实际jackson依赖

<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.9.9</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.7.0</version>
</dependency>

我尝试过包含两个库的最新版本。我不确定我在这里缺少什么。

1 个答案:

答案 0 :(得分:3)

您使用的是哪个Spring版本? 在the Spring wiki上查看Spring的库要求。

如果您使用的是Spring 4+,则不需要org.codehaus个依赖项。

现在Jackson 2.7存在一些问题 - Spring 4.3将支持此版本(请参阅SPR-13728SPR-13483)。与此同时,你应该坚持使用Jackson 2.6 +。