2010-08-12 136 views
1

我尝试在OSGi环境(FUSE ESB)中安装捆绑软件,但未设法解决它。该错误信息是:包使用冲突:导入包:de.foo.bar;版本=“0.0.0”

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包的“使用”指令中提到的所有其他包(在正确的版本)。

我检查了这个,并尝试了几个版本的变化(0.0.0和真正的版本号),但无法让它工作。

那么,错误信息是否意味着什么(也许我理解错了)?我需要检查什么?

感谢所有帮助

克劳斯


系统信息:

+0

如果您只是从'Export-packages'声明中删除'uses'和'version'属性,它会起作用吗?据我记得,他们是可选的。 – 2010-08-12 09:56:59

+0

属性是由maven-bundle-plugin添加的(即使我按名称而不是通配符来指定包),我不知道如何避免这种情况。不过,我认为,理解这些信息并配置正确的东西可能是值得的。 – FrVaBe 2010-08-12 10:17:36

回答

3

我终于发现有什么问题了。

我的包是一个Spring动态模块包,我在Spring bean配置中做了一个错误(在构造函数arg中使用'ref'代替'value')。通常弹簧配置错误是这样报道的 - 我不知道为什么当前的错误会导致误导消息。

编辑:

有故障的Spring配置不会导致使用冲突。它最终导入了包(org.apache.log4j),这是由不同的包(在我的FUSE ESB容器中)导出的,显然与我试图安装的包不同。

试图解决我的问题,我发现文章Diagnosing OSGi uses conflicts,我发现它有助于理解问题。