包使用冲突:Import-Package:de.foo.bar;版本= “0.0.0”

时间:2010-08-12 09:40:18

标签: java osgi

我尝试在OSGi环境(FUSE ESB)中安装捆绑包,但无法解决问题。错误消息是:

The bundle could not be resolved. Reason: Package uses conflict: Import-Package: de.foo.bar; version="0.0.0"

我的包导入包 de.foo.bar 。 导出包 de.foo.bar 的包使用'uses'指令执行此操作。

Export-Package = de.foo.bar;uses:="{other packages}";version="2.4.0"

据我所知,我必须确保我的包必须导入de.foo.bar包的'uses'指令中提到的所有其他包(在正确的版本中)。

我检查了这个,并尝试了几个版本更改(0.0.0和实际版本号),但无法使其工作。

那么,错误信息真正意味着什么(也许我理解错了)?我该怎么检查?

感谢您的帮助

克劳斯


系统信息:

1 个答案:

答案 0 :(得分:3)

我终于找到了错误。

我的bundle是一个Spring Dynamic Module包,我在spring bean配置中犯了一个错误(在构造函数arg中使用'ref'而不是'value')。通常会报告弹簧配置错误 - 我不知道为什么当前错误导致误导性消息。

编辑:

错误的Spring配置不会导致使用冲突。它最后是导入的包 org.apache.log4j ,它由不同的包(在我的FUSE ESB容器中)导出,显然与我尝试安装的包连接不同。

试图解决我的问题我找到了文章Diagnosing OSGi uses conflicts,我发现这篇文章对于解决这个问题很有帮助。