2011-11-02 173 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