0

我有可序列化的 Java 类配置。

我想创建一个包含字符串类型数据的配置实例,文档(org.w3c.dom.Document)并将其保存到 BLOB 类型的 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(); 

我首先将其转换为字节数组,然后保存。

谁能帮我摆脱这个问题..

4

2 回答 2

2
java.io.NotSerializableException: org.w3c.tidy.DOMElementImpl

这就是说DOMElementImpl该类未标记为Serializable。即使你的Configuration类实现Serializable了,你类中的所有字段也需要这样做。我认为这Document是问题所在的领域。引用此序列化教程

请注意,要成功序列化一个类,必须满足两个条件:

  • 该类必须实现 java.io.Serializable 接口。

  • 类中的所有字段都必须是可序列化的。如果字段不可序列化,则必须将其标记为瞬态。

看看这个DOMElementImpl,它确实实现了Serializable。如果您需要将其序列化到数据库,那么您需要在存储到数据库之前将其导出到另一个类。

于 2012-09-05T13:34:11.117 回答
0

你可能想用Kryo绕过这些序列化问题

于 2012-09-05T13:46:16.103 回答