我正在开发一个在不同服务器上搜索文件的应用程序 GWT。我在名为 Search 的类中的服务器包中有我的搜索代码。为了帮助 Search 找到服务器,我将服务器位置放在一个名为 Login 的类中,该类位于共享包中。 Login 包含 Authentication 对象,它存储单个服务器的信息。
调用Search的代码如下:
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);
当我运行程序并尝试搜索时,程序打印错误:无法获取类 [Lcom.example.test.shared.Authentication;
的类型签名。
认证代码如下:
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;
}
}
我试过更改类型声明、添加序列化、切换到 IsSerializible,但没有任何效果!
最佳答案
I have tried changing the type declaration, adding Serialization, switching to IsSerializible, and nothing works!
您错过了一个:您必须具有默认(零参数)构造函数,否则无法创建新实例。反序列化过程创建一个对象,然后分配字段。
我相信您可以保护此构造函数,这样开发人员就不会意外使用它。
关于java - GWT - 无法获取类的类型签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30955582/