1

アプリケーションの状態を保存するために使用されるクラスがいくつかありました。ファイル内/ファイルからシリアル化および逆シリアル化する必要があります。問題なく動作しました。ここで、新しい一時フィールドを追加しました。もちろん、古いファイルをシリアル化解除しません。古いファイルを開くことができるようにするために、この新しい一時フィールドを削除しましたが、再び開くことはできませんでした! 次の例外が発生しました。

com.qqer.fuzzy.app.ApplicationCurrentState; ローカル クラスに互換性がありません: ストリーム classdesc serialVersionUID = 6313827182653283573、ローカル クラス serialVersionUID = 1

どうすれば修正できますか?新しいフィールドをすべて削除すれば、すべて問題ないと思いました。

4

2 に答える 2

2

オブジェクトをシリアル化したときの値であるため、serialVersionUID 静的フィールドの値を 1 から 6313827182653283573 に変更します。

これにより、オブジェクトをシリアル化したときとまったく同じ非一時的なフィールドがクラスにまだある場合、オブジェクトをシリアル化解除できます (それ以降、serialVersionUID フィールドを導入または変更し、それを忘れたため、これは当てはまりません)。 .

于 2013-02-02T08:05:41.407 に答える
0

serialver新しいバージョンをすべての古いクラスに設定するのを手伝ってください。 すべて問題ありません

于 2013-02-02T08:04:43.190 に答える