2016-10-03 64 views
0

我想将类型FilerDetailsExcelFileBean(项目A的包A)的obect列表转换为字节数组。在项目A中成功转换后,我将字节数组传递给了Web服务,然后再将字节数组转换为List项目B中的FilerDetailsExcelFileBean类型(项目B的包B)的对象。为了从字节数组中取回对象的列表,我在两个项目中都创建了相同的文件FilerDetailsExcelFileBean,因为包B由于设计模式而无法导入包A文件。Java序列化

代码ListOfObject转换成字节数组:

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文件的列表是在不同的项目-A (代码ListOfObject转换成字节数组:)和FilerDetailsExcelFileBean文件在不同的项目-B (代码字节数组转换成ListOfObject :)。和FilerDetailsExcelFileBean导入不可能进入项目-B由于某些原因。

我知道这个问题(问题是,当我们将arrayList转换为字节数组时,使用了不同的持久性文件,当我们将它转​​换回列表ob对象时,使用了不同的持久性文件),但是我需要解决这个问题。这个问题的最佳解决方案是什么

+0

制作一个类为'FilerDetailsExcelFileBean'的库,并将其添加到两个项目中。 – samirk433

回答

2

这将无法正常工作,packageA.FilerDetailsExcelFileBeanpackageB.FilerDetailsExcelFileBean不同,所以你不能序列化第一个,然后将它反序列化为第二个。类名甚至类的布局是相同的这一事实是不够的。如果你想用Java序列化来做到这一点,那么类必须完全相同 - 它们也必须在同一个包中。

而不是使用Java序列化,使用不同的机制 - 例如,将对象转换为JSON或XML并在另一侧解析它。