包使用冲突:使用jasperreports导入包

时间:2012-11-01 21:40:58

标签: java eclipse osgi equinox

我在OSGi中遇到常见的“使用冲突”问题,我是OSGi的新手,很抱歉,如果这很简单的话。我已阅读thisthis other个问题。我还阅读了this,它更详细地解释了如何调试这些问题;然而,我无法弄明白。我找不到重复的导出(引用上一篇文章“必须总是有多个供应商才能看到使用约束违规。”)

这是完整的错误

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?

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

尝试在Package uses conflict: Import-Package on startup of a bundle阅读我的其他(长)答案 我在那里找到了一个相当详细的如何找到冲突。

答案 2 :(得分:0)

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