2014-09-19 180 views
0

我們的某個捆綁包在joda-time/2.2.0上有'進口',但是當我啓動它時,它總是會獲得可用的joda-time/1.6.2卡拉夫的系統文件夾。我不知道這怎麼可能發生?有沒有辦法告訴卡拉夫不要選擇我們指定的系統包?請注意,我們放棄捆綁包來部署文件夾以安裝它們。OSGi包在指定捆綁包上拾取系統捆綁包

回答

0

只需在導入的包之後添加需要導入的版本即可。

Import-Package: org.xx.xx;version=1.5.0 

參考this

+0

我們已經要求相關團隊來做這個!可能有一系列的版本。 – 2014-09-19 14:07:30

1

首先,確保你真正需要兩人這才包的版本。是的,你可以完成這項工作,但總的來說,除非你真的需要在應用程序中出現不同版本的軟件包,否則應避免它。檢查bundle是否消耗joda時間以及它們在Import-Package語句中指定的版本範圍。

我不知道,如果你意識到這一點,但如果你導入一個包,你總是,隱式或顯式地指定一個版本範圍你是兼容:

  • 如果您不指定任何版本,您可以有效地聲明您可以兼容從零到無限的版本範圍。
  • 如果您只指定一個版本,則表示您與該版本兼容,並且任何高於該版本的版本均可兼容,最高可達無限。
  • 如果您指定了兩個版本,則表明您與該範圍兼容,您可以使用方括號或圓括號來表明是否包含或排除邊框。

沒有明確指定範圍被認爲是不好的做法。 OSGi有關語義版本的白皮書,更詳細地解釋了這一點。

因此,請確保您瞭解使用joda-time使用的捆綁包的版本,看看您是否可以部署一個joda時間實現,並確保您自己的捆綁包也使用與該兼容的版本範圍。

相關問題