当前位置: 首页 > 知识库问答 >
问题:

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

孔星宇
2023-03-14

根据这个Spring引导教程,我正在编写一个简单的RESTAPI。在我的本地开发机器(Ubuntu 15.04和Windows 8.1)上,一切都很有魅力。

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

开始日志正常,但只要我向endpoint发送请求,就会出现以下错误:

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

然后沿着stacktrace往下看:

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);
    }
}

任何帮助都将不胜感激。这很奇怪,因为完全相同的东西在其他机器上完美地工作。

共有3个答案

左丘峰
2023-03-14

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

return ResponseEntity.status(HttpStatus.BAD_REQUEST);

应该是:

return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
柳墨一
2023-03-14

你应该对你的pom做一些更改。xml和mvc调度程序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>
袁翰池
2023-03-14

这发生在我身上,只在一种资源(一种方法)上,我不明白为什么。类中的所有方法都在同一个包中,具有相同的注释,对响应性的调用相同。好(…) 等。刚刚工作。

但不是这个。

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

我一加上它们就行了。

希望它最终能节省一些时间。。。

 类似资料: