【问题标题】:java.lang.AbstractMethodError/ClassCastException when creating integration test for osgi using felix, osgi and PaxRunner Framework使用 felix、osgi 和 PaxRunner 框架为 osgi 创建集成测试时出现 java.lang.AbstractMethodError/ClassCastException
【发布时间】:2014-08-10 22:58:24
【问题描述】:

我正在尝试为我的捆绑包创建集成测试。基本上我想模仿我在普通网络应用项目中的设置(其中测试在 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 委员会提交,但我无权这样做:

https://ops4j1.jira.com/browse/PAXEXAM/fixforversion/12880/?selectedTab=com.atlassian.jira.jira-projects-plugin:version-issues-panel

专家可以帮我解决我的问题吗?我已经走到尽头了:(

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

http://www.mediafire.com/download/qnh2gzgygys9982/cq-training.zip

命令:mvn clean verify

谢谢

【问题讨论】:

  • 关于 JIRA 权限,Atlassian 似乎更改了我们托管实例的默认设置。我已经修复了它们,所以一旦你注册了一个 JIRA 帐户,你现在应该能够创建一个问题。如果仍有问题,请重试并联系ops4j@googlegroups.com
  • 我仍然没有发帖权限。但我会寄给他们。谢谢楼主
  • 我无法向他们发送电子邮件,看来我不允许这样做。暂停:(

标签: osgi integration-testing apache-felix pax-exam pax-runner


【解决方案1】:

您的类路径中似乎存在冲突的 OSGi Core API 版本。在运行时,您的 OSGi 框架(Felix 或 Equinox)应该是类路径上唯一的核心 API。

如果您有像 org.osgi:org.osgi.core 这样的其他版本作为(传递)依赖项,请确保将其指定为 provided 范围或排除该依赖项。

【讨论】:

  • 在父项目中,已经提供了范围。尝试在捆绑项目(核心)上指定 osgi.core 在提供的范围内。同样的问题
【解决方案2】:

想要关注这个问题的朋友,请到他们的官方谷歌群组页面:

https://groups.google.com/forum/#!topic/ops4j/g43cPidOvng

已发布 JIRA 问题:

https://ops4j1.jira.com/browse/PAXRUNNER-443?filter=-2

【讨论】:

    猜你喜欢
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    • 2015-06-14
    • 2017-07-11
    • 2014-05-22
    • 2010-11-12
    • 2020-10-18
    • 2016-07-25
    相关资源
    最近更新 更多