如何针对Juno和Kepler

时间:2014-04-02 19:42:51

标签: java eclipse-juno eclipse-plugin eclipse-kepler eclipse-pde

我使用Kepler编写了一个Eclipse插件。现在它的代码已经完成了,我尝试使用Juno来安装它以测试向后兼容性,并在安装时遇到了这个错误:

Only one of the following can be installed at once: 
Expression Language 3.4.300.v20110228 (org.eclipse.core.expressions 
3.4.300.v20110228) 
Expression Language 3.4.401.v20120912-155018 
(org.eclipse.core.expressions 3.4.401.v20120912-155018) 
Expression Language 3.4.401.v20120627-124442 
(org.eclipse.core.expressions 3.4.401.v20120627-124442) 
Expression Language 3.4.400.v20120523-2004 
(org.eclipse.core.expressions 3.4.400.v20120523-2004) 
Expression Language 3.4.501.v20131118-1915 
(org.eclipse.core.expressions 3.4.501.v20131118-1915) 

如上所示,Kepler想要表达式3.4.500而Juno使用3.4.401。我已尝试从org.eclipse.core.expressions插件中删除最低版本要求(之前已设置为3.4.500),但无济于事。

编写支持Juno和Kepler的插件的正确方法是什么?至少解决这个依赖性问题需要什么?

根据要求,这是清单:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: My Plugin
Bundle-SymbolicName: com.mycompany.eclipse;singleton:=true
Bundle-Version: 0.2.2
Bundle-Activator: com.mycompany.eclipse.Activator
Bundle-Vendor: MyCompany Inc
Require-Bundle: org.eclipse.ui,
 org.eclipse.core.runtime,
 org.eclipse.core.resources;bundle-version="3.8.1",
 org.eclipse.jface.text;bundle-version="3.8.2",
 org.eclipse.ui.ide;bundle-version="3.8.2",
 org.eclipse.ui.editors;bundle-version="3.8.0",
 org.eclipse.jdt.core;bundle-version="3.8.3",
 com.mycompany.eclipse.dependencies;bundle-version="0.1.3",
 org.eclipse.ui.forms;bundle-version="3.6.0",
 org.eclipse.core.expressions;bundle-version="3.4.500"
Bundle-RequiredExecutionEnvironment: JavaSE-1.7,
 JavaSE-1.6
Bundle-ActivationPolicy: lazy
sherpaManifest-Version: 1.0
Bundle-ClassPath: .,
 resources/,
 icons/,
 static/

根据comment on this question插件永远不会向后兼容。有没有人有这方面的经验?

1 个答案:

答案 0 :(得分:2)

插件bundle-versionRequire-Bundle条目中插件的MANIFEST.MF值确定了所需依赖项的版本。

你有:

org.eclipse.core.expressions;bundle-version="3.4.500"

这就是说你的插件至少需要版本3.4.500的表达式插件。将版本更改为3.4.401以与Juno一起使用。