web-dev-qa-db-fra.com

Application d'amorçage à ressort: aucun convertisseur trouvé pour la valeur de retour du type

J'écris une API REST simple conformément au tutoriel this Spring-Boot. Sur mes machines de développement locales (Ubuntu 15.04 et Windows 8.1), tout fonctionne à merveille.

J'ai un ancien serveur 32 bits Ubuntu 12.04 LTS sur lequel je voulais déployer mon service REST.

Le journal de démarrage est correct, mais dès que j'envoie une demande GET au noeud final/user/{id}, j'obtiens le message d'erreur suivant:

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

Et puis en bas de la pile:

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

L'ensemble de la pile est posté ici .

J'ai examiné certaines réponses faisant référence à cette erreur, mais celles-ci ne semblent pas s'appliquer à mon problème, car j'utilise Spring-Boot, pas de configuration xml.

Le contrôleur affecté est:

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

Toute aide serait grandement appréciée. C'est très bizarre puisque les mêmes choses fonctionnent parfaitement sur d'autres machines.

Merci d'avance!

13
gmazlami

vous devez apporter quelques modifications aux fichiers pom.xml et mvc-dispatcher-servlet.xml: Ajoutez les dépendances suivantes à votre fichier 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>

et mettez à jour votre fichier 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

Cela m'est arrivé sur une seule ressource (une méthode) et je ne comprenais pas pourquoi. Toutes les méthodes au sein de classes dans le même package, avec les mêmes annotations, le même appel à ResponseEntity.ok(...) etc. fonctionnent.

Mais pas celui-ci.

Il s'avère que j'avais oublié de générer les accesseurs sur mon cours de POJO!

Dès que je les avais ajoutés, cela fonctionnait.

Espérons que cela pourra éventuellement sauver du temps à quelqu'un ...

18
Pierre Henry

Cela se produit lorsque vous oubliez l'appel "build":

return ResponseEntity.status(HttpStatus.BAD_REQUEST);

devrait être:

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

Je rencontre ce problème, car j'ai omis les méthodes Getters et Setters.

1
shellhub