Согласно AutoValue documentation аннотирования абстрактному класса с @GwtCompatible (сериализуемыми = TRUE) и реализацией сериализации должно быть достаточно для класса сгенерированного значения, чтобы можно было использовать в GWT RPC. Тем не менее, с классом ниже я получаю следующее сообщение об ошибке:GWT Сериализация исключение с Автозначением
Caused by: com.google.gwt.user.client.rpc.SerializationException:
Type 'com.my.package.client.types.AutoValue_PersonLocalData' was not included in the set of types which can be serialized by this SerializationPolicy or its Class object could not be loaded.
For security purposes, this type will not be serialized.: instance = PersonLocalData{title=Dr., givenName=Philip, familyName=Mortimer}
Я пробовал различный вариант (например, только осуществление регулярного Сериализуемый) без успеха. Что не так с классом?
import java.io.Serializable;
import com.google.auto.value.AutoValue;
import com.google.common.annotations.GwtCompatible;
import com.google.gwt.user.client.rpc.IsSerializable;
@AutoValue
@GwtCompatible(serializable = true)
public abstract class PersonLocalData
implements IsSerializable, Serializable {
public static final long serialVersionUID = 1L;
public static PersonLocalData create(
String title,
String givenName,
String familyName) {
return new AutoValue_PersonLocalData(
title, givenName, familyName);
}
public abstract String getTitle();
public abstract String getGivenName();
public abstract String getFamilyName();
}
Gradle файл включает в себя
compile 'com.google.guava:guava:18.0'
compile 'com.google.guava:guava-gwt:18.0'
compile 'com.google.auto.value:auto-value:1.1'
GWT версия: 2.6.0
Вы включили сгенерированные источники (источник для «AutoValue_PersonLocalData') в путь к классам для компилятора GWT? Возможно, вы могли бы показать больше своего 'build.gradle'. –
Я использую плагин GWT для градации, доступный здесь: https://steffenschaefer.github.io/gwt-gradle-plugin/doc/latest/configuration с пристанью и военным плагином. Однако я сомневаюсь, что сгенерированный источник недоступен из GWT, иначе stacktrace не смог бы вызвать toString для объекта после «instance =». –
IIUC, это сообщение отображается на сервере и говорит, что политика сериализации (сгенерированная GWT) не включает класс, поэтому GWT не мог видеть/иметь класс, но сервер делает. –