繁体   English   中英

类不会在GWT应用程序中序列化

[英]Class will not serialize in GWT application

com.google.gwt.user.client.rpc.SerializationException: 
Type 'NaturalOrderComparator' 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 = NaturalOrderComparator@35d9c40d

我已经省略了程序包名称,但是.class文件位于一个程序包中,该程序包可供GWT的客户端和服务器代码访问。

有问题的类是从https://raw.githubusercontent.com/paour/natorder/master/NaturalOrderComparator.java中提取的。 我仅修改类以指定其实现Comparator<String>而不是原始类型Comparator ,并且尝试使用IsSerializableSerializable接口都无济于事。 现在,它正在使用IsSerializable

这是堆栈跟踪的前5行

at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:665)
at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:126)
at com.google.gwt.user.client.rpc.core.java.util.TreeMap_CustomFieldSerializer.serialize(TreeMap_CustomFieldSerializer.java:47)
at com.google.gwt.user.client.rpc.core.java.util.TreeMap_CustomFieldSerializer.serializeInstance(TreeMap_CustomFieldSerializer.java:71)
at com.google.gwt.user.client.rpc.core.java.util.TreeMap_CustomFieldSerializer.serializeInstance(TreeMap_CustomFieldSerializer.java:29)

我的赌注是对Character.isSpaceChar的电话- 令人惊讶的是, GWT无法模拟它 ,这可能导致此类无法序列化。 但是GWT会模仿不推荐使用的Character.isSpace也许它可以满足您的需求?

如果它是简单的Comparator实现,则不要在实体/ bean对象中返回它,而应将其放在.client。*中,以便可以对其进行编译。 这样,客户端和服务器都可以使用它。 如果你必须有它的对象,然后使之瞬时所以它不会被序列化。 这是常见的有另一个包叫做共享,并确保您的.gwt.xml文件具有<source path='shared' />这样编译器将编译共享包中的类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM