首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Pax考试中加载ipojo Maven包

在Pax考试中加载ipojo Maven包
EN

Stack Overflow用户
提问于 2013-02-20 00:20:08
回答 2查看 569关注 0票数 1

我正在尝试使用Pax创建一个测试,其中我为测试加载的一些包依赖于包"org.apache.felix.ipojo“。

如果我在Pax考试配置中遗漏了加载此包的一行,例如:

代码语言:javascript
复制
@Configuration
public Option[] config() throws MalformedURLException{
    return options(
            junitBundles(),
            BUNDLES OTHER THAN(org.apache.felix.ipojo),
            ...

然后,我得到一个错误,指示该包缺少依赖项:

代码语言:javascript
复制
ERROR: Bundle com.N.A [35] Error starting mvn:com.N/com.N.A (org.osgi.framework.BundleException: Unresolved constraint in bundle com.N.A [35]: Unable to resolve 35.0: missing requirement [35.0] osgi.wiring.package; (&(osgi.wiring.package=org.apache.felix.ipojo)(version>=1.8.0)))
org.osgi.framework.BundleException: Unresolved constraint in bundle com.N.A [35]: Unable to resolve 35.0: missing requirement [35.0] osgi.wiring.package; (&(osgi.wiring.package=org.apache.felix.ipojo)(version>=1.8.0))
        at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:3826)
        at org.apache.felix.framework.Felix.startBundle(Felix.java:1868)
        at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1191)
        at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:295)
        at java.lang.Thread.run(Thread.java:662)

但是,如果我添加一个包含它的行:

代码语言:javascript
复制
@Configuration
public Option[] config() throws MalformedURLException{
    return options(
            junitBundles(),
mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.ipojo")
            ...

我收到一条指示ClassCastException的消息,我认为这是由于构建在Felix中的ipojo包造成的。

代码语言:javascript
复制
ERROR: Bundle org.apache.felix.ipojo [34] Error starting mvn:org.apache.felix/org.apache.felix.ipojo (org.osgi.framework.BundleException: Activator start error in bundle org.apache.felix.ipojo [34].)
java.lang.ClassCastException: org.apache.felix.ipojo.Extender cannot be cast to org.osgi.framework.BundleActivator
        at org.apache.felix.framework.Felix.createBundleActivator(Felix.java:4177)
        at org.apache.felix.framework.Felix.activateBundle(Felix.java:1972)
        at org.apache.felix.framework.Felix.startBundle(Felix.java:1895)
        at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1191)
        at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:295)
        at java.lang.Thread.run(Thread.java:662)

我正在使用Felix和JUint4TestRunner作为跑步者。

如何才能在没有冲突的情况下访问此依赖关系?

EN

回答 2

Stack Overflow用户

发布于 2013-02-21 18:44:42

ClassCastException最有可能表示您的类路径上有另一个OSGi API副本。如果您对org.osgi:org.osgi.core有Maven依赖,请确保作用域是provided,而不是compiletest

票数 1
EN

Stack Overflow用户

发布于 2013-02-20 11:57:52

我用的是:

代码语言:javascript
复制
public CompositeOption ipojoBundles() {
    return new DefaultCompositeOption(
            mavenBundle("org.apache.felix", "org.apache.felix.ipojo").versionAsInProject(),
            mavenBundle("org.ow2.chameleon.testing", "osgi-helpers").versionAsInProject());
}

使用以下版本: iPOJO 1.8.6和osgi-helpers 0.6.0

在编写OSGi测试时,帮助器是减轻负担的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14970147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档