2

3 つのプロジェクトがあります。1 つ目は RMI クライアントで、2 つ目は RMI サーバーです。また、いくつかの共通クラスがある 3 番目のプロジェクトもあります。3 番目のプロジェクトからライブラリを作成し、他のプロジェクト (クライアントとサーバー) に追加しました。ライブラリ(3番目のプロジェクト)にあるクラスAをリモートクラスの引数として渡したいときに問題があります。私の問題は、serialVersionUID に関する例外が発生することです...どこに問題がありますか? 問題は、クライアントとサーバーの間でこのクラス A を共有することにあると思います。

助けてください

4

2 に答える 2

1

クラスにserialVersionUIDを設定しましたか?

そうでない場合、シリアライザーは、同じクラスの互換性のないバージョンを逆シリアル化しようとしていると考える可能性があります。これは、serialVersionUID が生成され、プラットフォームによって異なる可能性があるためです。


Fíndbugs パターンを定義する理由については、こちらを参照してください: http://findbugs.sourceforge.net/bugDescriptions.html#SE_NO_SERIALVERSIONID

また、この質問を見てくださいserialVersionUID とは何ですか? なぜ使用する必要がありますか?

于 2013-02-23T14:57:11.867 に答える
0

最初と 2 番目のプロジェクトで、1 つのクラスに異なる実装を使用しているようです。クラス A は共有ライブラリにあると言ったので、そのクラスで使用されているフィールドを確認し、それらに関連するすべてのクラスが共有されていることを確認する必要があります (サブクラスからインスタンスを渡す場合は、それらのサブクラスも)。

于 2013-02-23T15:02:51.683 に答える