0

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

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

4

2 回答 2

0

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

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

于 2013-05-26T04:37:32.723 回答
0

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

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

于 2013-05-26T05:00:35.180 回答