GWT - Konnte es nicht bekommen, geben Sie die Signatur der Klasse
Arbeite ich an einer GWT-Anwendung, die Suche von Dateien auf verschiedenen Servern. Ich habe meine Suche code in das server-Paket eine Klasse namens Suche. Zu helfen, Suchen, suchen Sie den Server, ich habe die server-Standorte in einer Klasse namens Login, die in der gemeinsamen Paket. Login-Authentifizierung enthält Objekte, die die Informationen gespeichert, die für einen einzelnen server.
Den code zum Aufruf der Suche ist wie folgt:
SearchInterfaceAsync search = GWT.create(SearchInterface.class);
AsyncCallback<Void> callback = new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
System.out.println("Error: " + caught.getMessage());
}
@Override
public void onSuccess (Void results) {
System.out.println("Success!");
}
};
search.initialize(serverName, login, callback);
search.searchServers(search, variousSearchParameters, callback);
Wenn ich das Programm ausführen und versuchen, zu suchen, das Programm druckt Error: could not get type signature for class [Lcom.example.test.shared.Authentication;
.
Den code für die Authentifizierung ist wie folgt:
public class Authentication implements Serializable {
private static final long serialVersionUID = 5326256122438445301L;
private String server;
private String userName;
private String password;
public Authentication(String serverName){
server = serverName;
}
public Authentication(String serverName, String user, String pass){
server = serverName;
userName = user;
password = pass;
}
public String getServer(){
return server;
}
public String getUserName(){
return userName;
}
public String getPassword() {
return password;
}
}
Ich habe versucht, die änderung der Typ-Deklaration, hinzufügen von Serialisierungs-Wechsel zu IsSerializible, und nichts funktioniert!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie haben eine: Sie muss einen Standard (null-arg) - Konstruktor, oder eine neue Instanz kann nicht erstellt werden. Die Deserialisierung ein Objekt erstellt, dann ordnet die Felder.
Ich glaube, Sie können diesen Konstruktor geschützt, so dass kein Entwickler kann versehentlich verwenden.
private
.Falls es anderen hilft, dies sind die Ursachen für diesen Fehler, ich habe in letzter Zeit. Senden Objekte vom client zum server:
public MyObject() {}
Object
(Objekt kann nicht serialisiert werden)Serializable
Schnittstelle<?>
Probleme verursachen).Diese Fehler in GWT zeigen können, als einfach nur "500 server-Fehler", das ist schwer zu Debuggen.
Hoffen, dass spart einige Haare ziehen.
Mein problem war ein fehlendes 'IsSerializable' flag-interface auf die Klasse mit dem Namen in der Fehlermeldung.