Spring Boot 应用程序:找不到类型的返回值的转换器

新手上路,请多包涵

根据 这个 Spring-Boot 教程,我正在编写一个简单的 REST API 。在我的本地开发机器上( Ubuntu 15.04Windows 8.1 )一切都像一个魅力。

我有一个旧的 32-bit Ubuntu 12.04 LTS 服务器,我想在其上部署我的 REST 服务。

启动日志没问题,但是一旦我向 /user/{id} 端点发送 GET 请求,我就会收到以下错误:

 java.lang.IllegalArgumentException: No converter found for return value of type: class ch.gmazlami.gifty.models.user.User

然后向下堆栈跟踪:

 java.lang.IllegalArgumentException: No converter found for return value of type: class java.util.LinkedHashMap

整个堆栈跟踪发布 在这里

我查看了一些有关此错误的答案,但这些似乎不适用于我的问题,因为我使用的是 Spring-Boot,没有 xml 任何配置。

受影响的控制器是:

     @RequestMapping(value = "/user/{id}", method = RequestMethod.GET)
public ResponseEntity<User> getUser(@PathVariable Long id){
    try{
        return new ResponseEntity<User>(userService.getUserById(id), HttpStatus.OK);
    }catch(NoSuchUserException e){
        return new ResponseEntity<>(HttpStatus.NOT_FOUND);
    }
}

任何帮助将不胜感激。这很奇怪,因为完全相同的东西可以在其他机器上完美运行。

原文由 gmazlami 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 440
2 个回答

您应该对 pom.xml 和 mvc-dispatcher-servlet.xml 文件进行一些更改:将以下依赖项添加到您的 pom.xml 中:

 <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.4.3</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.4.3</version>
</dependency>

并更新您的 mvc-dispatcher-servlet.xml:

 <mvc:annotation-driven>
     <mvc:message-converters>
            <bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
   </mvc:message-converters>
</mvc:annotation-driven>

原文由 Yahia Ammar 发布,翻译遵循 CC BY-SA 3.0 许可协议

这发生在我身上,仅在一种资源(一种方法)上,我不明白为什么。同一包中的类中的所有方法,具有相同的注释,对 ResponseEntity.ok(...) 等的相同调用都可以正常工作。

但不是这个。

原来我忘记在我的 POJO 类上生成 getter 了!

一旦我添加了它们,它就起作用了。

希望它最终可以节省一些时间……

原文由 Pierre Henry 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题