0

初めて 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)
4

1 に答える 1

1

ほとんどの場合、Serializable を実装していない MyOtherObjects がいくつかあります。MyObj が Serializable を実装しているという事実は、それが実際に Serialized になる可能性があることを保証するものではありません。

MyOtherObjects の階層を確認すると、シリアル化できないオブジェクトが見つかるはずです。

于 2014-06-06T15:49:24.137 に答える