蓝图 - 使用 Pax 考试进行单元测试 - 无法解析依赖关系

Blueprint - Unit testing with Pax Exam - Unable to resolve the dependencies

我们正在将基于 spring 的 camel 应用程序迁移到基于蓝图的 camel 应用程序。我们也正在迁移到 fuse 6.1 版本。我正在使用 Pax Exam with Junit 运行ner 以及 apache felix container 来执行我的单元测试。我面临与 ehcache 管理器相关的未解决的捆绑问题。我已经尝试将所需的依赖项作为 mavenBundle 提供给 pax 配置,但没有任何运气。 Exception 不提供有关缺少依赖项的详细信息,而是仅提供包的一般错误,即 "osgi.wiring.package=net.sf.ehcache"。
我已经在 pom.xnl 中给出了必要的依赖项并且 Eclipse 没有显示任何错误。以下是 Junit 中使用的配置。

'@配置 public选项[]配置(){

    return options(systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("DEBUG"),
            systemProperty("Test.Property").value("system"),
            systemProperty("pax.exam.logging").value("none"),
            systemTimeout(600000),

            mavenBundle("commons-lang", "commons-lang", "2.5"),
            mavenBundle("commons-collections", "commons-collections", "3.2.1"),
            mavenBundle("commons-beanutils", "commons-beanutils", "1.8.3"),
            mavenBundle("commons-io", "commons-io", "2.0"),
            mavenBundle("ch.qos.logback", "logback-core", "1.0.9"),
            mavenBundle("ch.qos.logback", "logback-classic", "1.0.9"),
            mavenBundle("org.slf4j", "slf4j-api", "1.7.5"),
            mavenBundle("org.slf4j", "jcl-over-slf4j", "1.7.5"),
            mavenBundle("net.sf.ehcache", "ehcache-core", "2.6.9"),
            mavenBundle("net.sf.ehcache", "ehcache", "1.5.0"),
            mavenBundle("org.apache.aries.blueprint", "org.apache.aries.blueprint", "1.1.0"),
            mavenBundle("org.apache.aries.proxy", "org.apache.aries.proxy", "1.0.0"),
            mavenBundle("org.apache.aries", "org.apache.aries.util", "1.1.0"),
            mavenBundle("channelservicelayer", "base", "1.0.0"),
            mavenBundle("asm", "asm-all", "3.1"),
            junitBundles()
            );
}'

我附上日志如下

---
org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator]:启用 SLF4J API 支持。
org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator]:启用 Jakarta Commons Logging API 支持。
org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator]:启用 Log4J API 支持。
org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator]:启用 Avalon Logger API 支持。
org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator]:启用 JULI Logger API 支持。
16:58:10.097 [FelixStartLevel] DEBUG o.o.p.s.extender.BundleWatcher - 扫描包 [org.ops4j.pax.logging.pax-logging-api]
16:58:10.097 [FelixStartLevel] DEBUG o.o.p.s.extender.BundleWatcher - 扫描包 [org.ops4j.base]
16:58:10.097 [FelixStartLevel] DEBUG o.o.p.s.extender.BundleWatcher - 扫描包 [org.ops4j.pax.swissbox.core]
16:58:10.097 [FelixStartLevel] DEBUG o.o.p.s.extender.BundleWatcher - 扫描包 [org.ops4j.pax.swissbox.extender]
16:58:10.100 [FelixStartLevel] DEBUG o.o.p.s.extender.BundleWatcher - 扫描包 [org.ops4j.pax.swissbox.framework]
16:58:10.100 [FelixStartLevel] DEBUG o.o.p.s.extender.BundleWatcher - 扫描包 [org.ops4j.pax.swissbox.lifecycle]
16:58:10.100 [FelixStartLevel] DEBUG o.o.p.s.extender.BundleWatcher - 扫描包 [org.ops4j.pax.swissbox.tracker]
16:58:10.100 [FelixStartLevel] DEBUG o.o.p.s.extender.BundleWatcher - 扫描包 [org.apache.geronimo.specs.geronimo-atinject_1.0_spec]
16:58:10.101 [FelixStartLevel] DEBUG o.o.p.s.extender.BundleWatcher - 扫描包 [org.ops4j.pax.tipi.junit]
16:58:10.102 [FelixStartLevel] DEBUG o.o.p.s.extender.BundleWatcher - 扫描包 [org.apache.commons.lang]
16:58:10.103 [FelixStartLevel] DEBUG o.o.p.s.extender.BundleWatcher - 扫描包 [org.apache.commons.collections]
16:58:10.105 [FelixStartLevel] DEBUG o.o.p.s.extender.BundleWatcher - 扫描包 [org.apache.commons.beanutils]
16:58:10.106 [FelixStartLevel] DEBUG o.o.p.s.extender.BundleWatcher - 扫描包 [org.apache.commons.io]
16:58:10.106 [FelixStartLevel] DEBUG o.o.p.s.extender.BundleWatcher - 扫描包 [ch.qos.logback.core]
16:58:10.106 [FelixStartLevel] DEBUG o.o.p.s.extender.BundleWatcher - 扫描包 [ch.qos.logback.classic]
16:58:10.106 [FelixStartLevel] DEBUG o.o.p.s.extender.BundleWatcher - 扫描包 [slf4j.api]
16:58:10.107 [FelixStartLevel] DEBUG o.o.p.s.extender.BundleWatcher - 扫描包 [jcl.over.slf4j]
16:58:10.116 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 启动蓝图扩展器...
16:58:10.288 [FelixStartLevel] 信息 o.a.a.b.container.BlueprintExtender - 没有可用的停顿支持,因此蓝图组件不会参与停顿操作
16:58:10.289 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 蓝图扩展器已启动
16:58:10.289 [FelixStartLevel] DEBUG o.o.p.s.extender.BundleWatcher - 扫描包 [org.apache.aries.blueprint]
16:58:10.293 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 找到 ProxyManager 服务,开始处理蓝图包
16:58:10.295 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 扫描包 org.apache.felix.framework 用于蓝图应用程序
16:58:10.298 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 在 bundle org.apache.felix.framework 中找不到蓝图应用程序
16:58:10.298 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 扫描 bundle org.ops4j.pax.exam 用于蓝图应用程序
16:58:10.299 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 在 bundle org 中找不到蓝图应用程序。ops4j.pax.exam
16:58:10.300 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 扫描 bundle org.ops4j.pax.exam.inject 用于蓝图应用程序
16:58:10.300 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 在 bundle org.ops4j.pax.exam.inject 中找不到蓝图应用程序
16:58:10.300 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 扫描 bundle org.ops4j.pax.exam.extender.service 用于蓝图应用程序
16:58:10.300 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 在 bundle org.ops4j.pax.exam.extender.service 中找不到蓝图应用程序
16:58:10.300 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 扫描包 osgi.cmpn 用于蓝图应用程序
16:58:10.312 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 在 bundle osgi.cmpn 中找不到蓝图应用程序
16:58:10.312 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 扫描 bundle org.ops4j.pax.logging.pax-logging-api 用于蓝图应用程序
16:58:10.313 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 在 bundle org.ops4j.pax.logging.pax-logging-api 中找不到蓝图应用程序
16:58:10.313 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 扫描 bundle org.ops4j.base 用于蓝图应用程序
16:58:10.314 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 在 bundle org 中找不到蓝图应用程序。ops4j.base
16:58:10.314 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 扫描 bundle org.ops4j.pax.swissbox.core 用于蓝图应用程序
16:58:10.315 [FelixStartLevel] 调试 o.a.a.b.container.BlueprintExtender - 在 bundle 组织中找不到蓝图应用程序。ops4j.pax.swissbox.core
16:58:10.315 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 扫描 bundle org.ops4j.pax.swissbox.extender 用于蓝图应用程序
16:58:10.315 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 在 bundle org 中找不到蓝图应用程序。ops4j.pax.swissbox.extender
16:58:10.315 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 扫描 bundle org.ops4j.pax.swissbox.framework 用于蓝图应用程序
16:58:10.315 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 在 bundle org 中找不到蓝图应用程序。ops4j.pax.swissbox.framework
16:58:10.315 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 扫描 bundle org.ops4j.pax.swissbox.lifecycle 用于蓝图应用程序
16:58:10.316 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 在 bundle org 中找不到蓝图应用程序。ops4j.pax.swissbox.lifecycle
16:58:10.316 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 扫描 bundle org.ops4j.pax.swissbox.tracker 用于蓝图应用程序
16:58:10.316 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 在 bundle org 中找不到蓝图应用程序。ops4j.pax.swissbox.tracker
16:58:10.316 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 扫描包 org.apache.geronimo.specs.geronimo-atinject_1.0_spec 用于蓝图应用程序
16:58:10.316 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 在 bundle org.apache.geronimo.specs.geronimo-atinject_1.0_spec 中找不到蓝图应用程序
16:58:10.316 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 扫描包 org.apache.commons.lang 用于蓝图应用程序
16:58:10.317 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 在 bundle org.apache.commons.lang 中找不到蓝图应用程序
16:58:10.317 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 扫描包 org.apache.commons.collections 用于蓝图应用程序
16:58:10.326 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 在 bundle org.apache.commons.collections 中找不到蓝图应用程序
16:58:10.327 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 扫描包 org.apache.commons.beanutils 用于蓝图应用程序
16:58:10.330 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 在 bundle org.apache.commons.beanutils 中找不到蓝图应用程序
16:58:10.330 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 扫描包 org.apache.commons.io 用于蓝图应用程序
16:58:10.330 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 在 bundle org.apache.commons.io 中找不到蓝图应用程序
16:58:10.330 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 扫描包 ch.qos.logback.core 用于蓝图应用程序
16:58:10.331 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 在 bundle ch.qos.logback.core 中找不到蓝图应用程序
16:58:10.331 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 扫描包 ch.qos.logback.classic 用于蓝图应用程序
16:58:10.331 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 在 bundle ch.qos.logback.classic 中找不到蓝图应用程序
16:58:10.332 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 扫描包 slf4j.api 用于蓝图应用程序
16:58:10.332 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 在 bundle slf4j.api 中找不到蓝图应用程序
16:58:10.332 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 扫描包 jcl.over.slf4j 用于蓝图应用程序
16:58:10.332 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 在 bundle jcl.over.slf4j 中找不到蓝图应用程序
16:58:10.332 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 为 bundle null 启动 BlueprintContainer 销毁进程
16:58:10.332 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 不是蓝图包或 BlueprintContainer 的销毁已经完成为 null。
16:58:10.332 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 为 bundle null 启动 BlueprintContainer 销毁进程
16:58:10.332 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 不是蓝图包或 BlueprintContainer 的销毁已经完成为 null。
16:58:10.332 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 扫描包 org.apache.aries.blueprint 用于蓝图应用程序
16:58:10.335 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 在 bundle org.apache.aries.blueprint 中找到蓝图应用程序,路径为:[bundle://23.0:0/OSGI-INF/blueprint/blueprint-cm.xml , bundle://23.0:0/OSGI-INF/blueprint/blueprint-ext.xml]
16:58:10.351 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 异步安排创建蓝图包 org.apache.aries.blueprint
org.osgi.framework.BundleException:束基础 [26] 中未解决的约束:无法解决 26.0:缺少要求 [26.0] osgi.wiring.package; (osgi.wiring.package=net.sf.ehcache)
    在 org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:3826)
    在 org.apache.felix.framework.Felix.startBundle(Felix.java:1868)
    在 org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1191)
    在 org.apache.felix.framework.FrameworkStartLevelImpl.运行(FrameworkStartLevelImpl.java:295)
    在 java.lang.Thread.run(Thread.java:745)
16:58:10.355 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 启动捆绑包的 BlueprintContainer 销毁过程 org.apache.aries.util
16:58:10.355 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 不是蓝图包或 BlueprintContainer 的销毁已经完成 org.apache.aries.util。
16:58:10.355 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 为 bundle base 启动 BlueprintContainer 销毁过程
16:58:10.355 [FelixStartLevel] DEBUG o.a.a.b.container.BlueprintExtender - 不是蓝图包或已为基础完成的 BlueprintContainer 销毁。

我已经通过将ehcache 版本升级到最新的2.8.5 来解决问题。 ehcache-core 需要比我使用的 ehcache 1.5.2 版本更高的版本。
对于像我这样的 osgi 初学者来说,更大的问题是没有得到正确的错误信息,这让我花了很多时间去调查。