繁体   English   中英

加载新版本的jar,旧的序列化将不起作用

[英]Loading a new version of a jar, old serialization will not work

好的,所以我有一个jar,一个jar A,另一个jar,一个jarB。jarB很旧,我只是用它来将对象序列化为文件。 我关闭了正在运行的jar B,然后下载jar A来替换jarB。问题是与A相比,A具有一些新的/缺失的字段。 有什么办法可以使用jar B的副本来加载序列化的对象,然后将其移至A? (或您可以想到的任何其他解决方案)

众所周知,我不能使用外部库。 感谢您的提前帮助。

这取决于您是否有权访问JAR的源。 考虑到这个问题,我假设你没有。 如果是这种情况,您可以使用使用JAR B的自定义类加载器,加载给定的类,然后必须将其转换为非Object格式(XML,JSON,String等),以便调用可以使用字符串中的信息创建新的A Object的其他类。

如果这只是一次转换,那么拥有使用JAR B的应用程序,加载类并将其保存为非序列化形式(Again,XML,JSON,文本等)可能会更容易,然后使用JAR A由您的实际应用程序加载。

您需要在要序列化的对象的类定义中提供序列号Id,然后需要在jars A和jars中保持相同。完成此操作后,您应该能够使用jar B反序列化文件。使用jar A序列化。

您可以阅读http://www.mkyong.com/java-best-practices/understand-the-serialversionuid/作为示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM