Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ClassNotFoundException:org.apache.felix.dm.DependencyActivatorBase with Pax考试_Java_Unit Testing_Osgi_Apache Felix_Pax Exam - Fatal编程技术网

Java ClassNotFoundException:org.apache.felix.dm.DependencyActivatorBase with Pax考试

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:

我正在使用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: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时它会工作。