我有一個叫做Expression的類,它試圖使用下面的load()/ save()函數進行序列化。它曾經工作得很好,在對我的代碼和Expression類進行了一些更改之後,致電in.readObject()
引發ClassCastException
。 的錯誤信息是: java.lang.ClassCastException:java.lang.String中不能轉換到java.io.ObjectStreamClass中Java可序列化失敗
0
A
回答
0
對我來說,感覺很不好二進制數據存儲爲一個字符串。嘗試使用更穩定的方式來存儲ObjectOutputStream的二進制輸出。如果你真的想堅持使用字符串格式的方法,試着使用Base64編碼,這總是安全的。
我可能會看到一個問題是,你自己定義的serialUID靜態常量:
private static final long serialVersionUID = 3L;
這個UID是用於確定是否在類路徑中的類與兼容輸入對象的類。所以我懷疑是你修改了這個類而不改變serialVersionUID。這使得ObjectInputStream認爲它是兼容的,但你仍然在使用舊數據。嘗試擺脫舊的數據,並重新啓動一個新的save()
調用。
你確定Input
也是可序列化的嗎?那個班的UID不是腐敗的?
0
它似乎可序列化不喜歡類成員字段中的NULL值。 如果我確保所有類成員都有實際的內存,它不會失敗。
相關問題
- 1. 失敗安全序列化
- 2. 反序列化失敗 - C#
- 3. 序列化PropertyGrid(SerializeToXML)失敗
- 4. gson.fromJson - 反序列化失敗
- 5. WCF XML序列化失敗
- 6. 反序列化失敗
- 7. 多形陣列失敗的序列化
- 8. C++:自定義對象序列化/反序列化失敗
- 9. PHP序列化失敗並以半序列化格式存儲
- 10. XML序列化和反序列化失敗
- 11. JSON ASP.NET反序列化失敗,讓空
- 12. WCF雙向序列化失敗
- 13. Jax-ws異常序列化失敗
- 14. 序列化失敗使用的DataContractSerializer
- 15. JSON序列化失敗爲SwiftyJSON對象
- 16. SpringBoot:在序列化時失敗Integer類
- 17. 星火KRYO序列化失敗
- 18. 使用BinaryReader反序列化失敗
- 19. Ajax表單數據序列化失敗
- 20. 反序列化失敗與傑克遜
- 21. BreezeSharp - 枚舉序列化失敗
- 22. JSON反序列化到對象失敗
- 23. 使用gson反序列化DynamoDBResults失敗
- 24. jquery窗體序列化失敗
- 25. IOS JSON反序列化失敗 - STIG/NSJSONSerializer
- 26. 類定製序列化失敗
- 27. Rails保存序列化對象失敗?
- 28. 網頁API JSON序列化失敗
- 29. Gson日期反序列化失敗
- 30. java.io.InvalidClassException:從字符串到對象的序列化失敗java
除非Android Java開發中的東西差別很大,否則在我看來,您不需要爲此對象實現自己的序列化算法。我錯過了什麼嗎? – thatidiotguy
您是否嘗試加載保存的序列化對象在更改Expression類定義之前? – femtoRgon
之前存儲的內容已被刪除。 @thatidiotguy你是什麼意思實現我自己的算法?即時通訊只是添加實現Serializable。 – aviran