【问题标题】:Package uses conflict: Import-Package: de.foo.bar; version="0.0.0"包使用冲突:Import-Package: de.foo.bar;版本="0.0.0"
【发布时间】:2011-03-28 20:09:01
【问题描述】:

我尝试在 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 和真实版本号),但无法让它工作。

那么,错误消息的真正含义是什么(也许我理解错了)?我需要检查什么?

感谢您的帮助

克劳斯


系统信息:

【问题讨论】:

  • 如果您只从Export-packages 声明中删除usesversion 属性,它是否有效?据我记得,它们是可选的。
  • 属性是由 maven-bundle-plugin 添加的(即使我按名称而不是通配符指定捆绑包),我不知道如何避免这种情况。尽管如此,我认为理解该消息并正确配置内容可能是值得的。

标签: java osgi


【解决方案1】:

我终于找到了问题所在。

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

编辑:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-27
    • 2021-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多