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

gma*_*ami 16 rest ubuntu converters spring-boot

我根据编写一个简单的REST API 这个弹簧引导教程.在我的本地开发机器(Ubuntu 15.04和Windows 8.1)上,一切都像魅力一样.

我有一个旧的32位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
Run Code Online (Sandbox Code Playgroud)

然后在堆栈跟踪中:

java.lang.IllegalArgumentException: No converter found for return value of type: class java.util.LinkedHashMap
Run Code Online (Sandbox Code Playgroud)

整个堆栈跟踪都发布在这里.

我查看了一些引用此错误的答案,但这些似乎并不适用于我的问题,因为我使用的是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);
    }
}
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.这是非常奇怪的,因为完全相同的东西在其他机器上工作.

提前致谢!

Pie*_*nry 24

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

但不是这个.

事实证明我忘了在我的POJO课上生成getter!

我一添加它就行了.

希望它最终可以节省一些人的时间......

  • 这也解决了我的问题.如果跟踪此帖的任何人仍有问题,请仔细检查您的POJO getter; 在我的情况下,我在一个属性上有一个较低的吸气剂; 而不是预期的驼峰情况:gettargetObject()而不是getTargetObject() (2认同)
  • 和我一样......我忘记在我的 POJO 类中添加 getter。加1 (2认同)
  • 奇迹般有效。使用 SpringBoot 2.0+,不需要手动为 jackson 添加依赖,不需要手动注册 MessageConverter,你需要的只是你的 POJO 的 getter。 (2认同)
  • 拯救了我的一天,非常感谢皮埃尔。 (2认同)

小智 19

您应该对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>
Run Code Online (Sandbox Code Playgroud)

并更新您的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>
Run Code Online (Sandbox Code Playgroud)

  • 仅供参考,使用Spring Boot`1.4.0.RELEASE`我需要的只是依赖项. (4认同)

Kaa*_* Yy 6

当您忘记“构建”调用时,就会发生这种情况:

return ResponseEntity.status(HttpStatus.BAD_REQUEST);
Run Code Online (Sandbox Code Playgroud)

应该:

return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
Run Code Online (Sandbox Code Playgroud)


she*_*hub 5

我遇到这个问题,因为我省略了GettersSetters方法。