序列化异常 : type not included in serializable type set

标签 serialization gwt-rpc

在我的 Google Web Toolkit 项目中,出现以下错误:

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

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

最佳答案

GWT 跟踪一组可以序列化并发送到客户端的类型。 your.class.Type显然不在这个名单上。像这样的列表存储在 .gwt.rpc文件。这些列表已生成,因此编辑这些列表可能没有用。这些列表是如何生成的有点不清楚,但你可以尝试以下方法:

  • 确保 your.class.Type实现 java.io.Serializable
  • 确保 your.class.Type有一个公共(public)的无参数构造函数
  • 确保 your.class.Type 的成员做同样的事情
  • 检查您的程序是否不包含不可序列化类型的集合,例如ArrayList<Object> .如果这样的集合包含 your.class.Type并且被序列化了,就会出现这个错误。
  • 制作 your.class.Type实现IsSerializable .此标记接口(interface)专门用于应发送到客户端的类。这对我不起作用,但我的类(class)也实现了 Serializable ,所以也许这两个接口(interface)不能很好地协同工作。
  • 另一种选择是使用 your.class.Type 创建一个虚拟类。作为成员,并向您的 RPC 接口(interface)添加一个获取和返回虚拟对象的方法。这会强制 GWT 编译器将虚拟类及其成员添加到序列化白名单中。
  • 关于序列化异常 : type not included in serializable type set,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5210696/

    相关文章:

    java - GWT MAP 中的 Activity 指示器

    java - 如何在 GWT-RPC 应用程序中从 Window Authentication 获取用户名?

    java - 仅当未设置时才排除 SerializedName 字段

    c# - 如何在 C# 中比较两个实例的内容?

    c# - 如何解决 System.RuntimeType 由于其保护级别而无法访问的问题。只能处理公共(public)类型。

    mysql - 使用 GWT 进行在线音乐流传输

    java - GWT RPC 进行时更新/刷新 View

    java - Jackson YAML - 将 null 序列化为空值

    java - @SuppressWarnings ("serial")

    java - 如何在 GWT 中获取上周日期