使用felix、osgi和PaxRunner框架为osgi创建集成测试时,java.lang.AbstractMethodError/ClassCastException

使用felix、osgi和PaxRunner框架为osgi创建集成测试时,java.lang.AbstractMethodError/ClassCastException,osgi,integration-testing,apache-felix,pax-exam,pax-runner,Osgi,Integration Testing,Apache Felix,Pax Exam,Pax Runner,我正在尝试为我的包创建集成测试。基本上,我想模仿我在普通web应用程序项目中的设置(其中测试在src/test文件夹中) 我就快到了,只是当包试图激活时我有一个异常 本机容器异常 Running com.grundfos.wcm.impl.HelloWorldServiceImplIntegrationTest Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 1.196 sec <<< FAILUR

我正在尝试为我的包创建集成测试。基本上,我想模仿我在普通web应用程序项目中的设置(其中测试在src/test文件夹中)

我就快到了,只是当包试图激活时我有一个异常

本机容器异常

Running com.grundfos.wcm.impl.HelloWorldServiceImplIntegrationTest
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 1.196 sec <<< FAILURE! - in    com.grundfos.wcm.impl.HelloWorldServiceImplIntegrationTest
whenSuppliedNullNameThenThrowException(com.grundfos.wcm.impl.HelloWorldServiceImplIntegrationTest)       Time elapsed: 0.792 sec  <<< ERROR!
java.lang.AbstractMethodError: org.apache.felix.framework.BundleImpl.adapt(Ljava/lang/Class;)Ljava/lang/Object; at org.ops4j.pax.exam.nat.internal.NativeTestContainer.installAndStartBundles(NativeTestContainer.java:311)
at org.ops4j.pax.exam.nat.internal.NativeTestContainer.start(NativeTestContainer.java:177)
at org.ops4j.pax.exam.spi.reactors.AllConfinedStagedReactor.invoke(AllConfinedStagedReactor.java:79)
at org.ops4j.pax.exam.junit.impl.ProbeRunner$2.evaluate(ProbeRunner.java:264)
at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.ops4j.pax.exam.junit.impl.ProbeRunner.run(ProbeRunner.java:98)
at org.ops4j.pax.exam.junit.PaxExam.run(PaxExam.java:93)
at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
java.lang.ClassCastException: org.ops4j.pax.exam.inject.internal.Activator cannot be cast to org.osgi.framework.BundleActivator
    at org.apache.felix.framework.Felix.createBundleActivator(Felix.java:3814)
    at org.apache.felix.framework.Felix.activateBundle(Felix.java:1899)
    at org.apache.felix.framework.Felix.startBundle(Felix.java:1822)
    at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1192)
    at org.apache.felix.framework.StartLevelImpl.run(StartLevelImpl.java:266)
    at java.lang.Thread.run(Thread.java:745)
java.lang.ClassCastException: org.ops4j.pax.exam.raw.extender.intern.Activator cannot be cast to org.osgi.framework.BundleActivator
我试图向他们的官方JIRA董事会提交,但我没有这样做的许可:

有专家能帮我解决问题吗?我已经穷途末路了:(

示例项目(如果项目文件不起作用,请告诉我):

命令:mvn clean verify


谢谢

看起来您的类路径上的OSGi核心API版本有冲突。在运行时,您的OSGi框架(Felix或Equinox)应该是类路径上唯一的核心API


如果您有一些其他版本,如
org.osgi:org.osgi.core
作为(可传递的)依赖项,请确保为其提供
范围或排除依赖项。

对于那些想关注此问题的人,请访问他们的官方谷歌群组页面:

已发布JIRA问题:


关于JIRA权限,Atlassian似乎更改了我们托管实例的默认值。我已修复了它们,因此,一旦您注册了JIRA帐户,您现在应该可以创建一个问题。请重试并联系
ops4j@googlegroups.com
如果您仍然有问题。我仍然没有发布的权限。但是我拒绝所有邮件。谢谢sirI无法向他们发送电子邮件,看起来我不允许这样做。halp:(在父项目中,已提供范围。尝试在捆绑项目(core)上指定osgi.core也在提供的范围内。同样的问题