0

我对杰克逊和斯普林都是新手,所以如果这是一个愚蠢的问题,请原谅。我一直在研究一个处理 JSON 请求的简单 spring 项目。我有 GET 和 DELETE 工作,但是当我尝试 POST 时出现错误:

SEVERE: Servlet.service() for servlet [mvc-dispatcher] in context with path [/CynergyRestStarterKit] threw exception [Handler processing failed; ...with root cause
java.lang.NoSuchMethodError: org.codehaus.jackson.map.type.TypeFactory.type(Ljava/lang/reflect/Type;Lorg/codehaus/jackson/type/JavaType;)Lorg/codehaus/jackson/type/JavaType;
at org.springframework.http.converter.json.MappingJacksonHttpMessageConverter.getJavaType(MappingJacksonHttpMessageConverter.java:229)

这是我的 Java 服务:

@RequestMapping(value = "/todos", method = RequestMethod.GET)
public @ResponseBody
List<TodoItem> getTodos() {     
    return tasks;
}

@RequestMapping(value = "/todo/create", method = RequestMethod.POST)
public @ResponseBody
TodoItem createTodo(@RequestBody TodoItem item) {
    return null;
}

我究竟做错了什么?

4

2 回答 2

1

我在使用 spring-webmvc 3.2.9 时遇到了同样的问题,经过几次退休后,我发现我的项目需要以下库:

  • 杰克逊注释-2.3.3
  • 杰克逊核心2.3.3
  • 杰克逊-映射器-asl-1.9.13
  • 杰克逊核心asl-19.3

所以添加这些解决了问题

于 2014-07-09T21:27:00.213 回答
1

你用的是什么版本的 Spring 和 Jackson?

似乎表明版本问题。

我看到您使用的是 Jackson 的 1.x(codehaus 与 fastxml)。我会将 Spring 和 Jackson 都升级到最新版本。

于 2013-08-22T21:47:50.310 回答