2015-11-20 26 views
7

Sto scrivendo una semplice API REST in base al tutorial Spring-Boot this. Sulle mie macchine di sviluppo locale (Ubuntu 15.04 e Windows 8.1) tutto funziona come un fascino.Applicazione avvio a molla: nessun convertitore trovato per il valore di ritorno di tipo

Ho un vecchio server Ubuntu 12.04 LTS a 32 bit in giro su cui volevo installare il mio servizio REST.

Il registro di partenza è ok, ma non appena ho inviare una richiesta GET per l'/ {id} endpoint/utente, ottengo il seguente errore:

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

E poi giù per la stacktrace:

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

L'intero stacktrace viene inviato here.

Ho esaminato alcune risposte facendo riferimento a questo errore, ma quelle non sembrano essere applicabili al mio problema, dal momento che sto usando Spring-Boot, nessuna configurazione xml.

Il controllore è interessata:

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

Qualsiasi aiuto sarebbe molto apprezzato. È molto strano dal momento che le stesse identiche cose funzionano perfettamente su altre macchine.

Grazie in anticipo!

+0

soluzione https://stackoverflow.com/questions/41719142/how-to-return-a-set-of-objects-with-spring-boot/46977580 # 46977580 –

risposta

14

si dovrebbe apportare alcune modifiche al tuo pom.xml ei file MVC-dispatcher-servlet.xml: aggiungere il seguente dependecies alla 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> 

e aggiornare le 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> 
+4

FYI, utilizzando Spring Boot '1.4.0.RELEASE' tutto ciò di cui avevo bisogno erano le dipendenze. – cbmeeks

2

Questo accade quando si dimentica la chiamata "costruire":

return ResponseEntity.status(HttpStatus.BAD_REQUEST); 

dovrebbe essere:

return ResponseEntity.status(HttpStatus.BAD_REQUEST).build(); 
10

Questo è accaduto a me, su una risorsa unica (un metodo) e non capivo perché. Tutti i metodi all'interno delle classi nello stesso pacchetto, con le stesse annotazioni, la stessa chiamata a ResponseEntity.ok(...), ecc. Hanno funzionato.

Ma non questo.

Si è scoperto che mi ero dimenticato di generare i getter della mia classe POJO!

Non appena li ho aggiunti, ha funzionato.

Speriamo che può salvare qualcuno un po 'di tempo alla fine ...

+1

Anche questo ha risolto il mio problema.Se qualcuno che tiene traccia di questo post ha ancora problemi, controlla attentamente il tuo Getter POJO; nel mio caso, ho avuto un getter con la parte inferiore di una proprietà; invece del caso cammello atteso: gettargetObject() invece di getTargetObject() –