15

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

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


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


似乎它实际上不是特定于 Eclipse 的问题,当通过 maven/tycho 在命令行上构建时它也会失败。具体来说,我的目标平台是 Juno Release。是否有插件,虽然是功能的一部分,但不可用于其他捆绑包?我知道插件就在那里,但是 tycho 和 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 的解决方法,我很乐意知道。

4

2 回答 2

7

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

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

或者,您可以在开始运行时从运行配置中删除 1.0.2 版本的插件。点击运行 --> 运行配置打开运行配置对话框,切换到“插件”选项卡,在这里您可以选择您要使用的这些插件中的哪一个。

于 2012-12-12T07:54:49.580 回答
4

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

于 2012-12-18T21:50:44.100 回答