Я изучал выше, чтобы решить некоторый код GWT, написанный в 2008 году, при обновлении до GWT SDK 2.4.0 (с последней версией gxt * .jar) я получаю:
[WARN] adempiereService: An IncompatibleRemoteServiceException was thrown while processing this call.
com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException: com.google.gwt.user.client.rpc.SerializationException: Type 'org.idempiere.ui.gwt.client.util.AdempiereGXTUtil$LoginStage' was not included in the set of types which can be deserialized by this SerializationPolicy or its Class object could not be loaded. For security purposes, this type will not be deserialized.
at com.google.gwt.user.server.rpc.RPC.decodeRequest(RPC.java:315)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:206)
...
Caused by: com.google.gwt.user.client.rpc.SerializationException: com.google.gwt.user.client.rpc.SerializationException: Type 'org.idempiere.ui.gwt.client.util.AdempiereGXTUtil$LoginStage' was not included in the set of types which can be deserialized by this SerializationPolicy or its Class object could not be loaded. For security purposes, this type will not be deserialized.
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserialize(ServerSerializationStreamReader.java:581)
Этот пресловутый класс выглядит следующим образом (отредактировано в соответствии с идеями, приведенными в этой теме):
public class AdempiereGXTUtil {
public enum LoginStage implements IsSerializable, Serializable {
LOGOUT,
LOGIN,
ISLOGGEDIN,
ROLES,
WRONGUSER,
WRONGROLE;
LoginStage(){
}
};
}
Думая о ответе Андрея , чтобы добавить тип в белый список, ноenum - это не новый myType, верно?В любом случае, здесь есть некоторая ссылка в кодовой базе (удалены не релевантные поля):
public interface AdempiereService extends RemoteService {
public static final String SERVICE_URI = "adempiereService";
public static class Util {
public static AdempiereServiceAsync getInstance() {
AdempiereServiceAsync instance = (AdempiereServiceAsync) GWT
.create(AdempiereService.class);
return instance;
}
}
...
public LoginStage getLoginStage();
с:
public interface AdempiereServiceAsync {
...
public void getLoginStage(AsyncCallback<LoginStage> callback);
Изначально AdempiereGXTUtil не реализовал IsSerializable, Serializable, не имеет пустого конструктора, нопоместив их выше, и очистка проекта в Eclipse не изменит тех же ошибок.Используемая версия Eclipse - Indigo на Java 1.6 в среде Mac Lion.Надеюсь получить больше от этой темы, которая, кстати, удивительна своей технической глубиной.