2016-11-15 54 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文檔似乎是源代碼 –