【问题标题】:Eclipse RCP - change plugin.xml programmatically? Reload?Eclipse RCP - 以编程方式更改 plugin.xml?重新加载?
【发布时间】:2012-06-23 21:37:25
【问题描述】:

编辑:
我想做的是以编程方式将首选项页面添加到 Rclipse-RCP 3.7 应用程序的首选项菜单中。 不幸的是,这似乎不能以编程方式工作,如所述 in this post.

作为一种解决方案,我考虑创建一个特殊的插件,它将保持偏好。此插件应在其 plugin.xml 中声明所有首选项页面并自行卸载/安装以应用首选项菜单中的更改。

问题:

有没有可能

  1. 以编程方式更改插件自己的plugin.xml?
  2. 是否有可能以编程方式更新插件,从 plugin.xml 重新加载新设置?

【问题讨论】:

  • 能否请您告诉什么问题您正在尝试解决而不是提出可能的解决方案

标签: java eclipse-plugin eclipse-rcp reload


【解决方案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
猜你喜欢
  • 2012-04-13
  • 1970-01-01
  • 2012-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-10
相关资源
最近更新 更多