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クラスを呼び出したり利用したりしません。なぜそのクラスについて不平を言うのでしょうか? このスコアカードが関係している理由を確認する方法はありますか? (私は日食を使用しています)

ありがとうございました

4

2 に答える 2

1

の内部クラスをシリアル化していますScoreCardか? それらは、含まれているオブジェクトへの秘密の参照を持っています。

于 2012-09-09T02:30:53.670 に答える
0

復元しようとしているクラスが、たとえば別のクラスを介して間接的に ScoreCard に依存している可能性はありますか?

Eclipse で依存関係を確認するには、クラス名またはメソッド名をクリックして Ctrl+Shift+G を押します。クラスまたはメソッドが使用されているすべての場所が表示されます。

依存関係を発見するもう 1 つの方法は、メソッド名をクリックして Ctrl+Alt+H を押すことです。さらに発見できるコール グラフが表示されます。

于 2012-09-08T21:04:32.013 に答える