2012-09-08 43 views
1

我得到以下序列化錯誤,我想讀我的目標,我保存到一個文件爲什麼這個類被捲入系列化

java.io.InvalidClassException: com.testGame.scoreCard; Incompatible class (SUID): com.testGame.scoreCard: static final long serialVersionUID =-5895378336422852901L; but expected com.testGame.scoreCard: static final long serialVersionUID =0L; 
at java.io.ObjectInputStream.verifyAndInit(ObjectInputStream.java:2376) 
at java.io.ObjectInputStream.readNewClassDesc(ObjectInputStream.java:1658) 
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:683) 
at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1799) 
at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787) 
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1999) 
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1956) 

但我不明白的是爲什麼記分卡首先序列化?我正在寫和讀的類(對象)是序列化的,不會調用或使用scoreCard類。爲什麼會抱怨那個班?有沒有辦法看到爲什麼這個記分卡參與? (我使用的Eclipse BTW)

謝謝

回答

0

難道說你正試圖恢復間接地依賴於記分卡類,通過其他類的例子嗎?

要查看Eclipse中的依賴關係,您可以單擊類名稱或方法名稱,然後按Ctrl + Shift + G,它會顯示所有使用類或方法的位置。

發現依賴關係的另一種方法是單擊一個方法名並按下Ctrl + Alt + H,它會向您顯示可以進一步發現的調用圖。

+0

好點。我嘗試了它們,但仍無法找到連接。有沒有辦法我可以以某種方式調試這個,看到「變量/方法」是要求這個類? – Snake

+0

@Snake從'ScoreCard'中移除'implements Serializable'並重新測試。當序列化「ScoreCard」的人試圖這樣做時,你現在將得到一個'NotSerializableException',並且堆棧跟蹤會告訴你這是誰。 – EJP

+0

這是我沒有序列化的東西。當我測試沒有問題時,但是我從ACRA生產中的應用報告中得到這個錯誤 – Snake

1

你可能會序列化一個ScoreCard的內部類?他們對包含對象有祕密引用。

+0

感謝您的建議,但記分卡不存在內部類。我想我將不得不等待看看是否會從生產中獲得更多崩潰(我沒有在本地看到它) – Snake