osgi - PAX 考试 - 类未找到错误

标签 osgi apache-karaf karaf pax-exam pax

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

我在 PAX(使用的 karaf 容器)中部署了几个包。 karaf 启动后,我可以看到我的包和服务已启动并处于事件状态。但是,在我的测试用例中,我引用了一个类(不是服务也不是组件),它将在我的测试执行期间使用。该类驻留在 bundle 中,并且 bundle 已启动并成功运行,但我在测试用例执行中访问该类时遇到 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 上下文中运行,因此您需要调整您的测试。动态生成的测试包需要知道它需要导入有问题的类。 为此,您可以添加专门的探针配置方法。像下面这样:

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

关于osgi - PAX 考试 - 类未找到错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42999639/

相关文章:

java - 如何在 OSGi Karaf 中注册 org.apache.aries.blueprint.Interceptor?

java - OSGi 服务类依赖关系

java - 启动服务时Jpa-hibernate错误

hibernate - org.apache.aries.jpa :org. apache.aries.jpa.blueprint :2. 3.0 - 无法运行

java - karaf-maven-插件 : Defining a dependency as a feature

java - 预装 pax-jdbc-oracle 的自定义 Apache Karaf 4.0.4 发行版

osgi - 查看 osgi 包的依赖关系?

java - Apache Karaf (4.2.6)外壳: Unable to install webconsole

shell - 脚本 Karaf shell 命令?

java - karaf 容器中的 OSGI 集成测试