Java ClassNotFoundException:org.apache.felix.dm.DependencyActivatorBase with Pax考试
我正在使用Pax考试(3.5.0)进行OSGi单元测试。我已经创建了一个测试,但当我运行它时,我会得到以下堆栈跟踪:Java ClassNotFoundException:org.apache.felix.dm.DependencyActivatorBase with Pax考试,java,unit-testing,osgi,apache-felix,pax-exam,Java,Unit Testing,Osgi,Apache Felix,Pax Exam,我正在使用Pax考试(3.5.0)进行OSGi单元测试。我已经创建了一个测试,但当我运行它时,我会得到以下堆栈跟踪: java.lang.NoClassDefFoundError: org/apache/felix/dm/DependencyActivatorBase at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:
java.lang.NoClassDefFoundError: org/apache/felix/dm/DependencyActivatorBase
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.findClass(BundleWiringImpl.java:2279)
at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1501)
at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:75)
at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1955)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at org.apache.felix.framework.BundleWiringImpl.getClassByDelegation(BundleWiringImpl.java:1374)
at org.apache.felix.framework.Felix.createBundleActivator(Felix.java:4329)
at org.apache.felix.framework.Felix.activateBundle(Felix.java:2141)
at org.apache.felix.framework.Felix.startBundle(Felix.java:2064)
at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1291)
at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:304)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: org.apache.felix.dm.DependencyActivatorBase not found by com.company.wine.infrastructure [19]
at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1532)
at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:75)
at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1955)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 14 more
我已经在选项中配置了CoreOptions.mavenBundle(“org.apache.felix”、“org.apache.felix.dependencymanager”、“3.1.0”)
,我看到org.ops4j.pax.logging.pax日志api[org.ops4j.pax.swissbox.extender.BundleWatcher]:扫描包[org.apache.felix.dependencymanager]
已加载
但我还是有例外。有人知道我做错了什么吗
干杯。你必须区分Pax考试的设计方式和使用方式。 Pax测试的主要用例是在集成测试中使用它,在集成测试中测试先前构建的工件。 如果要在同一模块中进行测试,有两种方法。
1) 在maven的Integrationtest阶段,通过文件:dependency引用新构建的工件。
2) 通过构建一个包含可测试类和其他工件的小包。这还需要更改测试中的包导入/导出。
可以找到这样做的示例您的捆绑包中是否有它的导入?这个测试是集成测试还是作为单元测试使用?我使用它作为单元测试。我的包中的导入包完成了单元测试。然而,我不明白为什么在没有这个导入的情况下将它部署到Felix时它会工作。