我有序列化问题,无法找到原因。这是在Eclipse中的Android应用程序,竟然放弃了我一个非常无益的堆栈跟踪是这样的:
09-01 00:06:24.414: W/System.err(9961): java.io.NotSerializableException: com.myprogram.main.Entity$1
09-01 00:06:24.414: W/System.err(9961): at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1344)
09-01 00:06:24.414: W/System.err(9961): at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1651)
09-01 00:06:24.414: W/System.err(9961): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1497)
09-01 00:06:24.414: W/System.err(9961): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1461)
09-01 00:06:24.415: W/System.err(9961): at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:959)
09-01 00:06:24.415: W/System.err(9961): at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:360)
09-01 00:06:24.415: W/System.err(9961): at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1054)
09-01 00:06:24.415: W/System.err(9961): at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1384)
09-01 00:06:24.415: W/System.err(9961): at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1651)
09-01 00:06:24.415: W/System.err(9961): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1497)
09-01 00:06:24.415: W/System.err(9961): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1461)
已经找到Java flag to enable extended Serialization debugging info我决定把
-Dsun.io.serialization.extendedDebugInfo=true
继How can I specify the default JVM arguments for programs I run from eclipse?我插旗到VM参数为我JRE,但堆栈跟踪没有改变。重新启动Eclipse没有帮助。因此,在Editing the vm args of eclipse之后,我将该标志添加到我的eclipse.ini中,但仍然保持堆栈跟踪不变。我期待输出看起来像java.io.NotSerializableException – but where is the field?。我知道com.myprogram.main.Entity$1
是不可序列化的。这很容易。问题是为什么?任何建议,我怎么可能找出这个java.io.NotSerializableException
?
I t很简单:你有一个匿名类com.myprogram.main.Entity $ 1',它不是'Serializable'。你不需要扩展调试。 – EJP
谢谢,但我不明白。我有'公共抽象类实体实现Serializable {...}'。 'java.io.ObjectOutputStream.writeObject(Object object)'用于工作,但从那以后我做了很多改变,现在我得到了错误。我相信我改变了一些东西,导致我的课“不可序列化”,所以我试图进行调试来跟踪它。 –
此外,我读到'$ 1'通常指的是内部类的问题。我没有任何内部课程!我试图打开扩展调试的另一个原因。 –