![](/img/trans.png)
[英]Can a jar which is compiled on old java version be used in new applications?
[英]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.