- 締切済み
serialVersionUID はどう利用する?
表題のとおりなのですが、あるクラスをファイルとして保存するために、シリアライズするとありましたので、試してみました あるメーカーアプリを作り、そのファイルを生成。 別のクライアントアプリで、そのファイルを展開し利用。 と、活用したいのですが。 同じメーカーアプリケーション内ではちゃんと読み書きできるのですが、クライアントアプリ側ではひらいてくれずClassNotFoundExceptionが発生してしまいます。 型として制作しているクラスはそのまま同じクラスをクライアントアプリにもコピペして使ってるので、クラス名も内容も、serialVersionUID も同じ数字になってるのですが、 この場合なにが問題なのでしょうか。 そしてこのserialVersionUID は何の意味があるんでしょうか、いろいろその意味を検索して読んでみたのですが、それらが何を言ってるのか理解できません;
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- askaaska
- ベストアンサー率35% (1455/4149)
回答No.1
クラスAにserialVersionUIDが明示的に記述されている場合、 クラスAのバージョンやコンパイラのバージョンが変わってクラスA'になっても クラスAとクラスA'は同じものである という意味になります。 で、今回の問題はClassNotFoundExceptionなので そもそもserialVersionUID以前にクラスが見えていません。 Classpathの問題ですね。
お礼
シリアライズにするためのクラスを格納するパッケージを、同じパッケージ名をつけそれぞれのアプリにパッケージをアプリのコードが入ってるパッケージとは別に追加してその下にシリアライズするクラスを入れて稼働してみますと、ちゃんと読み取ってくれました。そのクラスパスの問題は、つまりこうしたパッケージから同じ名前のパッケージで管理しないとシリアライズするクラスの共有はできないということですか?