为什么我无法访问目标定义中的所有插件?

我有一个关于Eclipse中目标定义的问题。我想使用插件版本1.0.0,它在我的目标平台定义中,而我的工作区中有版本1.0.2的插件项目。对于我的目标定义中的所有其他插件,一切都按预期工作(我看到这是因为如果缺少某些内容,则会标记错误),但是这个特定的插件,Eclipse不能用于我的项目。只有插件版本1.0.2是。该插件未设置为单例。

为什么会这样,我该如何解决这个问题?


我发现当我关闭包含错误版本的项目时,我可以访问正确的版本 - 但这很尴尬,还有别的方法吗?


似乎它实际上不是一个特定于 eclipse 的问题,当通过 maven/tycho 在命令行上构建时,它也会失败。具体来说,我的目标平台是Juno Release。是否有插件虽然是功能的一部分,但不能用于其他捆绑包?我知道插件就在那里,但是第谷和Eclipse都不想让它可供我使用。

也许我还应该说它在编译时失败了。


虽然正如我所说,存在针对该问题的解决方法,但我仍然希望有一个“不错”的解决方案来解决这个问题。您可以在 https://github.com/kutschkem/Jayes 签出项目以及目标定义

您可能还需要先签出并构建此项目:git clone http://git.eclipse.org/gitroot/recommenders/org.eclipse.recommenders.git

设置目标平台后,尝试使用 Jayes 1.0.0(位于目标平台中)而不是 Jayes 1.0.2(位于工作区中)构建内容。你也可以尝试用maven构建,它不起作用。

已知的解决方法:

  1. 关闭 Jayes 1.0.2 项目。然后,eclipse 允许您使用 Jayes 1.0.0
  2. 要运行 (OSGi) 应用程序,您可以选择装入哪些捆绑软件。您可以在那里手动选择版本1.0.0
  3. 使用产品定义,您可以访问与解决方法 2 相同的运行时配置

如果有人找到了maven的解决方法,我会很高兴知道它。


答案 1

也许您已经将插件设置为单例,因此捆绑包只有一个具有特定ID的实例。您可以通过删除清单中的“singleton:=true”来更改此设置。断续器

Bundle-SymbolicName: org.eclipse.xxx; singleton:=true

或者,您可以在开始运行时从运行配置中删除 1.0.2 版本插件。单击“运行-->运行配置”打开运行配置拨号,切换到“插件”选项卡,在这里您可以选择要使用的插件。


答案 2

我想您已经尝试了以下内容,但是重新加载目标平台可能会有所帮助。另外,您的功能.xml文件为该插件的版本指定了什么?


推荐