Eclipse RCP - 以编程方式更改 plugin.xml?重新加载?
Posted
技术标签:
【中文标题】Eclipse RCP - 以编程方式更改 plugin.xml?重新加载?【英文标题】:Eclipse RCP - change plugin.xml programmatically? Reload? 【发布时间】:2012-06-23 21:37:25 【问题描述】:编辑: 我想做的是以编程方式将首选项页面添加到 Rclipse-RCP 3.7 应用程序的首选项菜单中。 不幸的是,这似乎不能以编程方式工作,如所述 in this post.
作为一种解决方案,我考虑创建一个特殊的插件,它将保持偏好。此插件应在其 plugin.xml 中声明所有首选项页面并自行卸载/安装以应用首选项菜单中的更改。
问题:
有没有可能
-
以编程方式更改插件自己的plugin.xml?
是否有可能以编程方式更新插件,从 plugin.xml 重新加载新设置?
【问题讨论】:
能否请您告诉什么问题您正在尝试解决而不是提出可能的解决方案? 【参考方案1】:了解您要解决的问题而不是您正在做什么会很有帮助。
一般来说,没有简单的方法可以做你想做的事。
您可以通过使用 OSGi 卸载并重新安装您的包来强制重新加载您的 plugin.xml。见org.osgi.framework.Bundle.uninstall()
。但根据 plugin.xml 贡献的扩展,并非扩展点消费者被编写为动态感知。
RCP 应用的另一个选项是使用org.eclipse.core.runtime.IExtensionRegistry.addContribution(InputStream, IContributor, boolean, String, ResourceBundle, Object)
贡献扩展。这对于动态添加非常有用,对于删除扩展来说不太可靠,并且同样需要注意(扩展点的消费者如何感知动态)。您可以通过将用户令牌设置为 null 来在 RCP 应用程序中使用它。
【讨论】:
如果我将令牌设置为 null,我会收到错误消息。如何获取主令牌或用户令牌? 您必须将 org.eclipse.core.internal.registry.IRegistryConstants.PROP_REGISTRY_NULL_USER_TOKEN 设置为 true以上是关于Eclipse RCP - 以编程方式更改 plugin.xml?重新加载?的主要内容,如果未能解决你的问题,请参考以下文章
Eclipse RCP:我应该将模型对象保存在哪里以及它们如何与视图对话?
如何从 Eclipse RCP 到“主机”Eclipse IDE 进行通信