java序列化问题

今天在调用系统其他模块的时候,调用方法参数是一个对象,一直无法调用成功,这里并不是简单地去调用方法,而是去调用一个jar包里方法,这里面用到很多模式代理,反射等,搞得我云里雾里的。反正总之一点,我的判断它是一个java序列化问题。

情境类似于 两个客户端 A 和 B 试图通过网络传递对象数据,A 端将对象 C 序列化为二进制数据再传给 B,B 反序列化得到 C。

一开始C类序列化 ID 问题是一样的,两个类的功能代码完全一致,但是包名不一样,应该包名代表模块,改成另一个模块的包名显得很不和谐,我就报着这个侥幸的心理试试,调用抛出arguments illegal异常。后面没有办法只能按照包路径重新新建C类,终于调用成功了。但是工程的包路径看起来真不和谐。:)

总结一下:序列化成功的必要条件 C 对象的全类路要一致,在 A 和 B 端都有这么一个类文件,功能代码完全一致。也都实现了 Serializable 接口,序列化 ID要一致。

你可能感兴趣的:(java)