Ich benutze Java ee 7 auf Glassfish 4.1.1. In C# ist ein Restservice geschrieben, der eine Sammlung von Book-Instanzen zurückgibt. Der Code auf dem Rest Client-Seite, die senden bekommen Anfrage:get Liste von Objektinstanzen eines Restclientaufrufs in Java ee 7
public List<Bandwcorpus> downloadBandWCorpus(String corpus) {
Client restClient = ClientBuilder.newClient();
List<Bandwcorpus> ebooks=restClient.target("http://bookandwalk.pl/api/admindocumentlist").queryParam("password", "XXXX").queryParam("corpusid", YYYY").request(MediaType.APPLICATION_JSON).get(new GenericType<List<Book>>() {});
restClient.close();
return ebooks;
}
Das Buch-Klasse ist ein POJO:
public class Book {
private static final long serialVersionUID = 1L;
private Integer documentid;
private String corpusid;
private String corpusoriginalid;
private float nett;
private String currencyid;
private int vat;
private Discount discount;
private Upoluj isbn;
public Bandwcorpus() {
}
}
Meine angewendet get-Funktion basiert auf http://www.adam-bien.com/roller/abien/entry/jax_rs_returning_a_list Blog-Post, und diese Lösung wurde auch angewandt in Java EE 7 Tutorial.
Leider erhalte ich den folgenden Compiler-Fehler in diesem Fall:
error: no suitable method found for get(<anonymous com.fasterxml.classmate.GenericType<List<Book>>>)
List<Book> ebooks=restClient.target("http://bookandwalk.pl/api/admindocumentlist").queryParam("password", "XXXXX").queryParam("corpusid", "YYYYY").request(MediaType.APPLICATION_JSON).get(new GenericType<List<Book>>() {});
method SyncInvoker.<T#1>get(Class<T#1>) is not applicable
(cannot infer type-variable(s) T#1
(argument mismatch; <anonymous com.fasterxml.classmate.GenericType<List<Bandwcorpus>>> cannot be converted to Class<T#1>))
method SyncInvoker.<T#2>get(javax.ws.rs.core.GenericType<T#2>) is not applicable
(cannot infer type-variable(s) T#2
(argument mismatch; <anonymous com.fasterxml.classmate.GenericType<List<Book>>> cannot be converted to javax.ws.rs.core.GenericType<T#2>))
wo T # 1, T # 2-Typ-Variablen: T # 1 Objekt in der Methode get (Class) erklären erstreckt T # 2 erweitert Object deklariert in Methode get (javax.ws.rs.core.GenericType)
Jede Idee, was mache ich falsch, wenn dies der vorgeschlagene Weg von Oracle und anderen Experten ist?
Könnten Sie Ihre Struktur für Bandwcorpus – Ironluca
@Ironluca Post, es war ein Tippfehler. Überall wo Bandwcorpus ist, ist es die Buchklasse, die ich von der früheren Version kopiert habe. – Roland
Versuchen Sie dies und überprüfen Sie, ArrayList obj = new ArrayList <>(); Liste ebooks = restClient.target ("http://bookandwalk.pl/api/admindocumentlist") .queryParam ("password", "XXXX"). QueryParam ("corpusid", JJJJ "). Request (MediaType.APPLICATION_JSON) .get (obj.getClass()); –
Ironluca