我尝试在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和实际版本号),但无法使其工作。
那么,错误信息真正意味着什么(也许我理解错了)?我该怎么检查?
感谢您的帮助
克劳斯
系统信息:
答案 0 :(得分:3)
我终于找到了错误。
我的bundle是一个Spring Dynamic Module包,我在spring bean配置中犯了一个错误(在构造函数arg中使用'ref'而不是'value')。通常会报告弹簧配置错误 - 我不知道为什么当前错误导致误导性消息。
编辑:
错误的Spring配置不会导致使用冲突。它最后是导入的包 org.apache.log4j ,它由不同的包(在我的FUSE ESB容器中)导出,显然与我尝试安装的包连接不同。
试图解决我的问题我找到了文章Diagnosing OSGi uses conflicts,我发现这篇文章对于解决这个问题很有帮助。