2011-11-02 122 views
-1

我有一个抽象类A,它实现了Serializable很奇怪java.io.NotSerializableException

还有另一个具体类B,它扩展了A类。

B类的构造函数中,我创建了一个类Cpublic final class C)的实例。

C抛出奇怪的例外是这样的:

 
Caused by: java.io.NotSerializableException: C 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1164) 
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518) 
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483) 
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400) 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158) 
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518) 
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483) 
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400) 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158) 
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330) 
    at org.apache.catalina.session.StandardSession.writeObject(StandardSession.java:1572) 

可以采取什么问题吗?

回答

4

我在猜测C不是Serializable,而是将它设置在非瞬态字段中。您需要使场暂态或可串行化。

+0

你是什么意思的字段..?你在说什么? –

+5

你的意思是你不知道一个字段是什么?你是如何达到序列化的? – Renan

+0

如果'C'对象没有被序列化,那是因为你设置了一个字段来引用它。我假设B不是C的内部类。 –

1

C不是Serializable。要么使它Serializable或标记为transient