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 首先是序列化的?我正在编写和阅读的类(对象)是序列化的,不调用或使用 scoreCard 类。为什么它会抱怨那堂课?有没有办法查看为什么涉及此记分卡?(我正在使用 Eclipse 顺便说一句)

谢谢

4

2 回答 2

1

您是否正在序列化一个内部类ScoreCard?它们具有对包含对象的秘密引用。

于 2012-09-09T02:30:53.670 回答
0

会不会是您尝试恢复的课程间接依赖于记分卡,例如通过另一个课程?

要查看 Eclipse 中的依赖关系,您可以单击类名或方法名,然后按 Ctrl+Shift+G,它将显示使用类或方法的所有位置。

发现依赖关系的另一种方法是单击方法名称并按 Ctrl+Alt+H,它将显示调用图,您可以进一步发现。

于 2012-09-08T21:04:32.013 回答