出于与外部产品兼容的原因,我需要构建一个RCP应用程序,该应用程序必须包含2个版本的插件。插件是org.apache.lucene,目前在eclipse 3.4中是1.9.1。我需要1.4.103版本才能与其他应用程序兼容。我应该说我的RCP应用程序最初是使用eclipse 3.2开发的,在升级到3.4之后出现了这个问题。
在开发和测试期间,我的应用运行正常。我必须在Run配置中手动添加1.4.103插件,否则它运行正常。
现在我处于Build Product阶段,无法找到在Product向导的Configuration选项卡中添加Lucene插件的两个版本的方法。在运行时,错误表示缺少1.4.103版本的Lucene。
答案 0 :(得分:2)
考虑到,在OSGi中,捆绑包没有束之间直接依赖的概念 相反,每个捆绑包都列出了其他捆绑包希望通过“Import-Package”和“Import-Service”标头注册的服务和包。
另一方面,捆绑包列出了它计划通过“Export-Package”和“Export-Service”导出的服务和包。因此,bundle实现之间没有硬依赖关系。只要某个捆绑包提供您导入的包,您的捆绑包就会很高兴。
举例说明,WTP(Web工具平台)has Duplicated javax.wsdl plugins:
现在您应该确保已经使用子菜单“PDE工具”(右键单击您的项目)转换了您的3.2插件项目。
然后您可以定义product for your rcp application,在其中您将为运行时定义配置(target),而不是开发目标。
答案 1 :(得分:2)
我在处理捆绑BIRT的产品时涉及到这个问题,因此继承了对2个不同版本的javax.wsdl的要求。在阅读了很多wiki页面,bugzilla条目等之后,我发现它是PDE(插件开发环境)构建过程中的一个问题。现在,Eclipse 3.5中已经解决了这个问题。 bugzilla条目位于https://bugs.eclipse.org/bugs/show_bug.cgi?id=265438。
基本上,Eclipse本身允许您指定两个版本并正确解析所有内容。但是,PDE Build(使用相同的产品文件)仅提取最新版本的插件。我们针对当前Eclipse 3.4基础的解决方案是将附加插件强制复制到目标的plugins文件夹中。这暂时解决了我们的问题,我们将来会迁移到Eclipse 3.5 RCP库,以获取上述错误修复。
答案 2 :(得分:0)
如何使用其他名称从源代码编译此插件?或者为较旧的插件函数编写一个包装器?