【发布时间】:2014-06-06 15:12:12
【问题描述】:
我只是第一次在 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)
【问题讨论】:
-
你能添加一个堆栈跟踪吗
-
啊,我的错! - 它在 writeObject() 中 - 但为什么它只发生在第一次。修改和添加堆栈跟踪
-
当它不是第一个是什么意思?如果您以不同的顺序序列化相同的对象,它是否适合您,您可以为此添加代码吗?
-
这看起来不像我以前见过的任何堆栈跟踪。例外在哪里列出?尝试创建一个minimal example来编译和演示这个问题。
-
那是 jdb 堆栈跟踪。我的意思是,它只会为第一个 myobj 引发异常——它不是有问题的特定 myobj。如果我以不同的顺序序列化,它仍然是第一个失败的。我不能创建一个小例子——如果可以的话,它会更明显。只是想知道这是否意味着它总是发生在第一个对象上。
标签: java objectoutputstream notserializableexception