Equinox / OSGi / Eclipse插件开发:这些依赖关系来自何处以及如何指定其最低版本?

时间:2016-12-19 21:52:12

标签: java eclipse eclipse-plugin osgi

我正在Neon.1a中开发一个Eclipse插件,它使用的库版本对于目标版本来说太新了(4.4.x Luna)。安装插件时的立即失败是在org.eclipse.core.filesystem,我在我的代码中使用它来将文本文件写入文件系统。但是,即使我指定了最小值1.4.0,由于其他隐式依赖项,它仍然会解析为1.6.0。如何使我的插件与旧版本的Eclipse兼容?我是否必须将隐式插件添加为依赖项并在清单中指定它们的最低版本?

MANIFEST.MF

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Workbench
Bundle-SymbolicName: workbench;singleton:=true
Bundle-Version: 1.0.0.beta
Require-Bundle: org.eclipse.core.runtime,
 org.eclipse.ui,
 org.eclipse.core.filesystem;bundle-version="1.4.0",
 org.apache.commons.io,
 org.apache.commons.lang
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ClassPath: .,
 swing2swt.jar
Import-Package: javax.xml.bind,
 org.apache.commons.io,
 org.eclipse.core.filesystem,
 org.eclipse.core.runtime,
 org.eclipse.datatools.connectivity,
 org.eclipse.swt,
 org.eclipse.ui,
 org.eclipse.ui.ide,
 org.osgi.framework
Bundle-Activator: Activator
Bundle-ActivationPolicy: lazy

Eclipse依赖关系层次结构
Eclipse Dependency Hierarchy

1 个答案:

答案 0 :(得分:1)

我认为你误解了这些观点。

您的清单表示您至少需要org.eclipse.core.filesystem的版本1.4.0,并且可以接受任何更高版本。

如果您当前的目标平台是Eclipse Neon,那么它将与插件的1.6.0版本匹配,并将显示在Plug-in Dependencies视图中。这并不意味着需要1.6.0,这个视图只是向您展示将在当前目标平台中使用的内容。

如果你想对Eclipse进行测试Luna使用Luna创建一个目标平台并对其进行测试。目标平台在“插件开发”中的“首选项”中指定。目标平台'。这允许您使用当前Eclipse创建代码,但是针对旧版本进行测试。