Serialization 保存并加载先前通过Eclipse注册表创建的对象的实例

Serialization 保存并加载先前通过Eclipse注册表创建的对象的实例,serialization,eclipse-rcp,Serialization,Eclipse Rcp,我目前在我的RCP应用程序中遇到一个问题,我想问一下,如果有人遇到同样的问题,可以给我一些有价值的提示: 我的RCP应用程序允许插件提供我的模型的特定抽象类(singleton)的实现,以便在运行时通过更新管理器扩展我的模型。我通过 extensionPointImplementation.createExecutableExtension(..) 在解析Eclipse注册表之后。我可以使用默认的Java序列化API序列化创建的实例 现在问题来了:试图反序列化对象的插件找不到模型扩展

我目前在我的RCP应用程序中遇到一个问题,我想问一下,如果有人遇到同样的问题,可以给我一些有价值的提示:

我的RCP应用程序允许插件提供我的模型的特定抽象类(singleton)的实现,以便在运行时通过更新管理器扩展我的模型。我通过

    extensionPointImplementation.createExecutableExtension(..) 
在解析Eclipse注册表之后。我可以使用默认的Java序列化API序列化创建的实例

现在问题来了:试图反序列化对象的插件找不到模型扩展的类实现,因为插件之间没有插件依赖关系。然而,我不可能创建这样一个依赖项,它会使在运行时扩展模型的想法过时

是否可以通过使用默认Java序列化API来解决此问题,或者我必须实现自己的序列化(如果所有必要的插件都可用,则解析Eclipse注册表并通过上面显示的行创建实例,否则抛出异常),这可能基于默认Java序列化API(如果可能,我不想完全自己创建序列化)


谢谢。

您需要定义一个所谓的好友策略。 在试图实例化类的包中添加

Eclipse-BuddyPolicy: registered
Eclipse-RegisterBuddy: <symbolic name of the bundle instantiating the class>
manifest.mf
。 在提供类add的bundle中

Eclipse-BuddyPolicy: registered
Eclipse-RegisterBuddy: <symbolic name of the bundle instantiating the class>
Eclipse注册表预算:

manifest.mf

谢谢。这个解决方案对我来说很好,尽管需要实例化类的插件必须依赖于创建实例的插件。