SerializationException:类型不包含在可序列化类型集中

bsp*_*oel 28 serialization gwt-rpc

在我的Google Web Toolkit项目中,我收到以下错误:

com.google.gwt.user.client.rpc.SerializationException:类型'your.class.Type'未包含在可由此SerializationPolicy序列化的类型集中,或者无法加载其Class对象.出于安全考虑,此类型不会被序列化.

导致此错误的可能原因是什么?

bsp*_*oel 66

GWT跟踪一组可以序列化并发送给客户端的类型.your.class.Type显然不在此列表中.这样的列表存储在.gwt.rpc文件中.生成这些列表,因此编辑这些列表可能毫无用处.如何生成这些列表有点不清楚,但您可以尝试以下方法:

  • 确保your.class.Type工具java.io.Serializable
  • 确保your.class.Type有一个公共的无参数构造函数
  • 确保成员your.class.Type做同样的事情

  • 检查您的程序是否不包含非可序列化类型的集合,例如ArrayList<Object>.如果此类集合包含your.class.Type并序列化,则会发生此错误.

  • 制作your.class.Type工具IsSerializable.此标记接口专门用于应发送到客户端的类.这对我来说不起作用,但我的课程也实现了Serializable,所以可能两个界面都不能很好地协同工作.

  • 另一种选择是创建一个带有your.class.Type成员的虚拟类,并向RPC接口添加一个获取并返回虚拟对象的方法.这会强制GWT编译器将伪类及其成员添加到序列化白名单中.