2014-09-19 103 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时间实现,并确保您自己的捆绑包也使用与该兼容的版本范围。

相关问题