2016-11-15 51 views
1

我有一个为Apache Karaf 4.0.5开发的组件。然而,事实证明它需要部署在基于旧版Felix的glassfish 4上。我得到这个消息,试图将其部署时:将OSGI DS组件移植到OSGI R4

missing requirement [319.0] osgi.extender; (&(osgi.extender=osgi.component)(version>=1.3.0)(!(version>=2.0.0))) 

然而,我的POM文件上没有显示任何osgi.component显式依赖。我想我一定使用了一些OSGI R5(或R6?)特定功能,但我不知道哪个会导致这个错误。

我该如何说服glassfish接受我的包,或者更改包的构建/ pom,以便在尝试使用依赖于R5或更高版本的OSGI功能时收到警告?

回答

2

您可能正在使用最新版本的bnd来生成您的包及其元数据。 Bnd将在您的软件包包含DS组件并且您需要DS 1.3中的新内容(如字段注入)或者您使用的是最新版本的bnd时,在osgi.component扩展程序(这是DS)上生成需求。

您可以在同捆的BND指令禁用的需求产生:

-dsannotations-options: norequirements

+1

我可以找到BND文件没有提及这一点,我也不能让它有任何效果。 –

+0

“bnd文档”唯一全面的bnd文档似乎是源代码 –