- 締切済み
パッケージ管理に変更されたデータObjectのリカバリー方法
今までパッケージ管理されていなかったデータオブジェクトをパッケージ管理するよう変更したのですが、クラス名が変更されたことにより旧データオブジェクトの復旧が行えなくなりました。 前データ) class Data implements Serializable { public Data(){} } (1)オブジェクトストリームとしてExport。 Data target = new Data(); java.io.FileOutputStream ostream = new java.io.FileOutputStream("C:\\test.data"); java.io.ObjectOutputStream p = new java.io.ObjectOutputStream(ostream); p.writeObject(target); p.flush(); ostream.close(); (2)Dataオブジェクトをパッケージ管理に変更 新データ) package com.corp.etc class Data implements Serializable { public Data(){} } (3)(1)でExportしたデータをImport java.io.FileInputStream istream = new java.io.FileInputStream("C:\\test.data"); java.io.ObjectInputStream p = new java.io.ObjectInputStream(istream); Object obj = p.readObject(); istream.close(); Data data = (Data)obj; (3)の実行結果) java.lang.ClassNotFoundException: Data クラス名が変わったので、当たり前の動きとは思うのですが、旧データを今までと同じようにインスタンス化するために何か良い方法はありませんでしょうか?
- みんなの回答 (1)
- 専門家の回答
補足
私の認識だと、XMLEncoder/XMLDecoder は、Java1.5からだっと思うのですが、これはあっていますか? 現在利用しているJavaのJ2SDKはJava1.4.2なので、XMLEncoder/XMLDecoderの利用は断念した経緯があります。 (OSの関係でJava1.5にアップグレードできません) Java1.4.2に対してXMLEncoder/XMLDecoder を利用できるように設定できれば、良いと思うのですが、拡張ライブラリとかあるのですかね?