2016-10-03 7 views
0

私は、プロジェクトAのバイト配列をバイト配列に変換した後、FilerDetailsExcelFileBean(プロジェクトAのAパッケージ)のリストを変換しようとしています。バイト配列をWebサービスに渡してから、バイト配列からオブジェクトのリストを取得するために、パッケージBはデザインパターンのためにパッケージAファイルをインポートできないため、両方のプロジェクトで同じファイルFilerDetailsExcelFileBeanを作成しました。 ListOfObjectにバイト配列を変換するJavaシリアル化

ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
ObjectOutputStream oos = new ObjectOutputStream(bos); 
oos.writeObject(List); 
byte[] bytes = bos.toByteArray(); 

コード:バイト配列にListOfObjectを変換する

コード

ByteArrayInputStream bis = new ByteArrayInputStream(filerMarkingFile.getRequestFile()); 
ObjectInputStream ois = new ObjectInputStream(bis); 
List<FilerDetailsExcelFileBean> f = (List<FilerDetailsExcelFileBean>) ois.readObject(); 

エラーがある: FilerDetailsExcelFileBeanにClassNotFound例外

注型FilerDetailsExcelFileBeanファイルのリストは、バイト配列にListOfObjectを変換するために異なるプロジェクト(コード:)とFilerDetailsExcelFileBeanファイルであるが、異なるプロジェクトB (ListOfObjectにバイト配列を変換するためのコード:)です。いくつかの理由により、FilerDetailsExcelFileBeanインポートはプロジェクトBにインポートできません。

私はarrayListをバイト配列に変換すると、別の永続化ファイルが使用され、リストobオブジェクトに変換したときに別の永続化ファイルが使用されるという問題がありますが、この問題を解決する必要があります。この問題のベストソリューションは何ですか

+0

クラス 'FilerDetailsExcelFileBean'を持つライブラリを作成し、これを両方のプロジェクトに追加します。 – samirk433

答えて

2

これは動作しません。packageA.FilerDetailsExcelFileBeanpackageB.FilerDetailsExcelFileBeanと同じクラスではないため、最初のシリアル化をシリアル化してから2番目のシリアル化を解除することはできません。クラス名とクラスのレイアウトさえ同じであるという事実は、十分ではありません。 Javaのシリアライゼーションでこれを実行する場合、クラスはまったく同じでなければならず、同じパッケージ内になければなりません。

Javaのシリアライゼーションを使用する代わりに、オブジェクトをJSONまたはXMLに変換し、反対側で解析するなどの別のメカニズムを使用します。

関連する問題