Search code examples
restspring-bootubuntuconverters

Spring Boot Application: No converter found for return value of type


I am writing a simple REST API according to this Spring-Boot tutorial. On my local dev machines (Ubuntu 15.04 and Windows 8.1) everything works like a charm.

I have an old 32-bit Ubuntu 12.04 LTS server lying around on which I wanted to deploy my REST service.

The starting log is ok, but as soon as I send a GET request to the /user/{id} endpoint, I get the following error:

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

And then down the stacktrace:

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

The entire stacktrace is posted here.

I looked into some answers referring this error, but those don't seem to apply to my problem, since I'm using Spring-Boot, no xml configs whatsoever.

The affected controller is:

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

Any help would be greatly appreciated. It is very weird since the exact same things work on other machines perfectly.


Solution

  • you should make some changes to your pom.xml and mvc-dispatcher-servlet.xml files: Add the following dependecies to your 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>
    

    and update your 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>