2016-10-31 31 views
0

我想在RCP客户端中使用cglib。 RCP客户端使用maventycho plugin构建。我们正在使用清单第一策略。如何将cglib添加到RCP客户端的OSGI清单中?

这是我的MANIFEST.MF:

Manifest-Version: 1.0 
Bundle-ManifestVersion: 2 
Bundle-Name: INFO+ RCP Common UI Plug-in 
Bundle-SymbolicName: a.company.prj.rcp.common.ui 
Bundle-Version: 8.0.14.qualifier 
Bundle-Vendor: Schweizerische Bundesbahnen SBB 
Bundle-RequiredExecutionEnvironment: JavaSE-1.7 
Bundle-Activator: a.company.prj.rcp.common.ui.CommonUIPlugin 
Bundle-ActivationPolicy: lazy 
Export-Package: 
a.company.prj.rcp.common.ui, 
... 
a.company.prj.rcp.common.ui.wizards.page 
Import-Package: 
org.apache.log4j;version="1.2.17" 
Require-Bundle: 
org.eclipse.ui;bundle-version="3.7.0", 
org.eclipse.ui.forms;bundle-version="3.5.101", 
com.ibm.ws.jpa.thinclient;bundle-version="8.0.6", 
... 
a.company.prj.rcp.core;bundle-version="8.0.14", 
... 

要添加CGLIB我改变了进口包装部分:

Import-Package: 
net.sf.cglib;version="3.2.0", 
org.apache.log4j;version="1.2.17" 

现在Eclipse的抱怨有:

No available bundle exports package 'net.sf.cglib' 

艾因想法如何将cglib包含在这个环境中?

+1

那么你需要一个在你的环境中提供这个包的cglib Bundle。在Eclipse中,您通常使用自定义目标平台(.target文件,请参阅本教程](http://www.vogella.com/tutorials/EclipseTargetPlatform/article.html),您也可以在您的第谷建立。 – stempler

回答

1

您需要将cglib包添加到您的目标平台,即Tycho在解决依赖性时将考虑的所有包的集合。你有三个选择这样做(从Tycho wiki page采取这个话题):

  1. 你可以简单地add an entire p2 repository to your target platform
  2. 您可以use a .target file并参考其中的cglib包(正如stempler已经建议的那样)。
  3. 你可以declare a Maven <dependency>cglib并使第谷“考虑”它。

由于您已经有Tycho构建工作,所以我建议您在构建之前使用您或您的同事在构建中使用的任何选项。

还有一点需要注意:选项1和选项2要求在p2存储库中提供cglib包,而选项3即使来自像“Central Repository”这样的“正常”Maven存储库,也可以工作。但是,在这三种情况下的cglib JAR 必须是一个有效的OSGi包,即包括与Bundle-SymbolicName等一个OSGi MANIFEST.MF

相关问题