我有可以序列化的Java类配置。
我想创建一个配置实例,其中包含string类型的数据,Document(org.w3c.dom.Document)并将其保存到BLb类型的Db中。
但是当我要将它保存到数据库中时,它会抛出异常:
java.io.NotSerializableException: org.w3c.tidy.DOMElementImpl
我的配置类是:
public class Configuration extends Tag implements Serializable{
private Document doc = null ;
private String checkpoint=null;
}
将配置对象保存到DB时,我使用了以下代码:
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutput out = new ObjectOutputStream(bos);
out.writeObject(configuration);
byte[] confBytes = bos.toByteArray();
我首先将其转换为字节数组,然后保存。
任何人都可以帮助我摆脱这个问题..
答案 0 :(得分:2)
java.io.NotSerializableException: org.w3c.tidy.DOMElementImpl
这表示DOMElementImpl
类未标记为Serializable
。即使您的Configuration
类实现Serializable
,您班级中的所有字段也需要这样做。我假设Document
是问题的字段。引用this serialization tutorial:
请注意,要成功序列化的类,必须满足两个条件:
该类必须实现java.io.Serializable接口。
类中的所有字段都必须是可序列化的。如果字段不可序列化,则必须将其标记为瞬态。
查看DOMElementImpl
class,它确实实现了Serializable
。如果需要将其序列化到数据库,则需要在存储到数据库之前将其导出到另一个类。
答案 1 :(得分:0)
您可能希望使用Kryo
绕过这些序列化问题