2

我在 OSGi 中遇到了常见的“使用冲突”问题,我是 OSGi 的新手,如果这很简单,我很抱歉。我已经阅读了这个这个其他问题。我还阅读了这篇文章,它更详细地解释了如何调试这些问题;但是,我无法弄清楚。我找不到重复的导出(引用上一篇文章“必须始终有多个供应商让您看到违反使用约束的情况。”)

这是完整的错误

initial@reference:file:../../Dev/mine/target/dependency/jasperreports-3.7.1-osgi.jar [151]
  Package uses conflict: Import-Package: org.apache.commons.collections.comparators; version="0.0.0"

这是 jasper 清单的相关片段。完全粘贴太长

Export-Package: ...,net.sf.jasperreports.crosstabs.fill.calculation;uses:="org.apache.commons.collections,net.sf.jasperreports.engine,org.apache.commons.collections.comparators,org.apache.commons.logging,..."

这是packages org.apache.commons.collections.comparators显示包正确导出且仅一次的输出

osgi> packages org.apache.commons.collections.comparators
org.apache.commons.collections.comparators; version="3.2.0"<org.apache.commons.collections_3.2.0 [869]>

有任何想法吗?还有什么我可以尝试的吗?我真的对此表示怀疑,但是,Equinox 是否抱怨导出的版本是 3.2.0 但uses版本是 0.0.0?

4

3 回答 3

2

尝试在 Apache Felix 上运行它。它在发现使用冲突时提供广泛的跟踪。

于 2012-11-02T08:37:40.213 回答
0

我最终选择了第三种选择。它与@PeterKriens 的建议有关,希望这将是其他人解决这些问题的另一种方法。我安装了Karaf,它在 Felix 之上运行,并使用 hot-deploy 文件夹一次部署一个 jar。这样我就可以看到出现的问题。它非常缓慢但冗长。只使用 Felix 我发现没有办法像这样部署

于 2012-12-14T15:20:14.227 回答
0

尝试在包使用冲突中阅读我的另一个(长)答案:启动包时导入包 我在那里放了一个相当详细的如何找到冲突。

于 2012-11-09T03:26:52.743 回答