it-swarm.com.de

Spring Boot-Anwendung: Für den Rückgabewert vom Typ wurde kein Konverter gefunden

Ich schreibe eine einfache REST - API gemäß this Spring-Boot-Tutorial. Auf meinen lokalen Dev-Rechnern (Ubuntu 15.04 und Windows 8.1) funktioniert alles wie ein Zauber.

Ich habe einen alten 32-Bit-Ubuntu 12.04-LTS-Server herumliegen, auf dem ich meinen REST -Dienst bereitstellen wollte.

Das Startprotokoll ist in Ordnung, aber sobald ich eine GET-Anforderung an den/user/{id} -Endpunkt sende, erhalte ich die folgende Fehlermeldung:

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

Und dann den Stacktrace runter:

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

Der gesamte Stacktrace wird hier veröffentlicht.

Ich habe nach einigen Antworten gesucht, die sich auf diesen Fehler beziehen, aber diese scheinen auf mein Problem nicht zutreffen, da ich Spring-Boot verwende, keine XML-Konfigurationen.

Der betroffene Controller ist:

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

Jede Hilfe wäre sehr dankbar. Es ist sehr seltsam, da genau dieselben Dinge auf anderen Maschinen perfekt funktionieren.

Danke im Voraus!

13
gmazlami

sie sollten einige Änderungen an den Dateien pom.xml und mvc-dispatcher-servlet.xml vornehmen: Fügen Sie der pom.xml die folgenden Abhängigkeiten hinzu:

<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>

und aktualisieren Sie Ihre 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>
18
Yahia Ammar

Dies geschah mir nur auf einer Ressource (einer Methode) und ich verstand nicht warum. Alle Methoden innerhalb von Klassen in demselben Paket, mit den gleichen Anmerkungen, demselben Aufruf von ResponseEntity.ok(...) usw., haben gerade funktioniert.

Aber nicht diese.

Es stellte sich heraus, dass ich vergessen hatte, die Getter in meiner POJO-Klasse zu generieren!

Sobald ich sie hinzugefügt hatte, funktionierte es.

Hoffentlich kann man irgendwann irgendwann Zeit sparen ...

18
Pierre Henry

Dies geschieht, wenn Sie den Aufruf "build" vergessen:

return ResponseEntity.status(HttpStatus.BAD_REQUEST);

sollte sein:

return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
4
Kaan Yy

Ich treffe dieses Problem, weil ich die Getters- und Setters-Methode weggelassen habe.

1
shellhub

Ich habe IntelliJ Idea und seine automatisch generierten Getter und Setter verwendet. Da ich ein boolesches Feld namens success hatte, wurde der Getter isSucccess() genannt. Ich habe es getSuccess() umbenannt und der Fehler ist verschwunden.