我收到以下序列化错误,我正在尝试读取保存到文件
的对象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类。为什么会抱怨这堂课?有没有办法了解为什么这个scoreCard参与? (我正在使用eclipse btw)
谢谢
答案 0 :(得分:1)
您是否正在序列化ScoreCard
的内部类?它们具有对包含对象的秘密引用。
答案 1 :(得分:0)
您尝试恢复的类可能是间接依赖于ScoreCard,例如通过另一个类吗?
要查看Eclipse中的依赖项,可以单击类名或方法名,然后按Ctrl + Shift + G,它将显示使用类或方法的所有位置。
发现依赖关系的另一种方法是单击方法名称并按Ctrl + Alt + H,它将显示您可以进一步发现的调用图。