【问题标题】:PAX Exam - Class not found errorPAX 考试 - 找不到类错误
【发布时间】:2017-08-17 09:36:07
【问题描述】:

我正在为我们的项目进行 PAX 集成测试,但我在类加载方面遇到了一些问题。

我在 PAX 中部署了几个包(使用 karaf 容器)。 karaf 启动后,我可以看到我的捆绑包和服务启动并处于活动状态。但是,在我的测试用例中,我提到了在我的测试执行期间将使用的类(不是服务或组件)。该类驻留在捆绑包中,捆绑包已启动并成功运行,但在测试用例执行中访问该类时我得到ClassnotFoundError,如下所示,

**java.lang.ClassNotFoundException: com.myproject.sample.bundle.DatabaseConfig
        at** org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:501)
        at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421)
        at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:412)
        at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        at com.integrationtest.testcases.internal.development.LaunchContainerTest.populateDBProfiles(LaunchContainerTest.java:189)
        at com.integrationtest.testcases.internal.development.LaunchContainerTest.testLaunchOSGiContainerWithDefualtSettingsAndSleep(LaunchContainerTest.java:152)
Failed tests:  
LaunchContainerTest.testLaunchOSGiContainerWithDefualtSettingsAndSleep:152->populateDBProfiles:189
▒ ClassNotFound

是不是跟容器有关?

【问题讨论】:

  • 测试中的代码是什么样子的?

标签: osgi apache-karaf karaf pax-exam pax


【解决方案1】:

由于您的测试本身也将在 OSGi 上下文中运行,因此您需要调整您的测试。动态生成的测试包需要知道它需要导入有问题的类。 为此,您可以添加专门的探针配置方法。如下所示:

@ProbeBuilder
public TestProbeBuilder probeConfiguration(TestProbeBuilder probe) {
    //make sure the needed imports are there. 
    probe.setHeader(Constants.IMPORT_PACKAGE, "*,com.myproject.sample.bundle.*");
    return probe;
}

【讨论】:

    猜你喜欢
    • 2015-08-31
    • 2014-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-03
    • 2017-06-08
    • 1970-01-01
    • 2019-05-26
    相关资源
    最近更新 更多