Osgi Pax考试3.3.0-如何加载实用程序jar?

Osgi Pax考试3.3.0-如何加载实用程序jar?,osgi,pax,pax-exam,Osgi,Pax,Pax Exam,我正在使用最新的Pax考试(3.3.0)进行OSGi测试。我有Pax考试,并运行,部署和启动我的捆绑包等。生活很好 我还有一个实用程序项目,其中包含各种工厂和其他有用的功能,我希望能够在多个测试项目中重用这些功能。它是一个maven项目,作为依赖项包含在Pax-Exam-pom.xml中 然而,当我尝试访问实用程序jar中包含的任何类时,我会得到一个ClassNotFoundException。我一直在使用类加载器,发现我可以通过URLClassLoader直接加载该类。但是,仍然会抛出Clas

我正在使用最新的Pax考试(3.3.0)进行OSGi测试。我有Pax考试,并运行,部署和启动我的捆绑包等。生活很好

我还有一个实用程序项目,其中包含各种工厂和其他有用的功能,我希望能够在多个测试项目中重用这些功能。它是一个maven项目,作为依赖项包含在Pax-Exam-pom.xml中

然而,当我尝试访问实用程序jar中包含的任何类时,我会得到一个ClassNotFoundException。我一直在使用类加载器,发现我可以通过URLClassLoader直接加载该类。但是,仍然会抛出ClassNotFoundException

将公用事业项目转换为捆绑包不是一个选项。我需要在@BeforeClass注释方法中使用实用程序代码,而BundleContext实例还没有被注入

有谁能告诉我在Pax考试中获取我的实用程序项目的最佳/最简单的方法吗?

正如《Pax考试》中指出的,
@BeforeClass
不受Pax考试的支持,至少不以预期的方式。它由JUnit驱动程序执行,而不是在测试容器中执行,这就是为什么没有包上下文

如果您希望代码在容器中运行,那么它必须是一个捆绑包

这个问题已经讨论过了。

正如课前所指出的,
@BeforeClass
不受Pax考试的支持,至少不是以预期的方式。它由JUnit驱动程序执行,而不是在测试容器中执行,这就是为什么没有包上下文

如果您希望代码在容器中运行,那么它必须是一个捆绑包


这个问题已经讨论过了。

您只需将实用程序jar作为一个组件添加即可。然后它将被加载到您的OSGI容器中。您只需定义所需的导出包。

您只需将实用程序jar作为一个组件添加即可。然后它将被加载到您的OSGI容器中。您只需要定义所需的导出包。

我明白了。谢谢你的回答,它很简单,但澄清了很多!我懂了。谢谢你的回答,它很简单,但澄清了很多!