NotSerializableException仅第一次

时间:2014-06-06 15:12:12

标签: java objectoutputstream notserializableexception

我第一次在objStream.writeObject(myobj)中遇到NotSerializableException。

myobj内部包含一个对象列表。 同样的myobj,当它不是第一个时,序列化很好。 有什么想法吗? 代码看起来有点像这样:

public class MyObj implements Serializable 
{
   private List<MyOtherObjects> objects;
};

for (myobj : myobjs) {
                byteOutputStream = new ByteArrayOutputStream();
                ObjectOutputStream objStream = new ObjectOutputStream(byteOutputStream);
                objStream.writeObject (myobj);
                objStream.flush(); 
                objStream.close();
                file.write(byteOutputStream.toByteArray());
...

堆栈追踪:

DoCompute flush thread [XRXTransactionQueue-1-1402065645208--1569561033][1] where
  [1] java.io.ObjectOutputStream.writeObject0 (ObjectOutputStream.java:1,156)
  [2] java.io.ObjectOutputStream.defaultWriteFields (ObjectOutputStream.java:1,509)
  [3] java.io.ObjectOutputStream.writeSerialData (ObjectOutputStream.java:1,474)
  [4] java.io.ObjectOutputStream.writeOrdinaryObject (ObjectOutputStream.java:1,392)
  [5] java.io.ObjectOutputStream.writeObject0 (ObjectOutputStream.java:1,150)
  [6] java.io.ObjectOutputStream.writeObject (ObjectOutputStream.java:326)
  [7] utils.DoCompute$FileHandler.flush (DoCompute.java:678)

1 个答案:

答案 0 :(得分:1)

你很可能有一些MyOtherObjects,而不是实现Serializable,MyObj实现Serializable这一事实并不能保证它实际上可以被序列化,除非它的所有成员都能被序列化。

检查MyOtherObjects的层次结构,你应该找到一些不可序列化的对象。