java - Pax-exam 4 没有 felix() 方法

标签 java maven osgi pax-exam

我一直在使用 Pax Exam 3.3.0 的 EclipseLink 项目中使用以下代码片段进行 OSGi 测试:

@Configuration
public static Option[] config() {
    return options(
            repositories("http://repo1.maven.org/maven2"),
            mavenBundle().groupId("org.osgi").artifactId("org.osgi.compendium").version("4.3.0"),
            mavenBundle().groupId("org.eclipse.persistence").artifactId("org.eclipse.persistence.asm")
                    .version("2.5.1"),
            //JAXB API
            bundle("file:" + PLUGINS_DIR + "javax.xml.bind_2.2.12.v201410011542.jar"),
            //WS API
            bundle("file:" + PLUGINS_DIR + "javax.ws.rs_1.1.1.v20101004-1200.jar"),
            //EclipseLink bundles
            bundle("file:" + PLUGINS_DIR + "org.eclipse.persistence.moxy_2.7.0." + QUALIFIER + ".jar"),
            bundle("file:" + PLUGINS_DIR + "org.eclipse.persistence.core_2.7.0." + QUALIFIER + ".jar"),
            bundle("file:" + PLUGINS_DIR + "org.eclipse.persistence.asm_5.0.1.v201405080102.jar"),

            junitBundles(),
            felix());
}

现在,我们将构建切换到 JDK 8,我使用 Pax Exam 4.4.0,因为 Pax Exam 3.x 不使用 JDK 8 构建。我的问题是 Pax Exam 4 不再提供方便的 org.ops4j .pax.exam.CoreOptions.felix() 方法。我该如何解决这个问题?我的目标是以尽可能最少的配置运行 OSGi 测试。

如果我删除 felix() 方法,则会收到以下错误:

Running org.eclipse.persistence.testing.osgi.OSGiBundleTest
[main] INFO org.ops4j.pax.exam.spi.DefaultExamSystem - Pax Exam System (Version: 4.4.0) created.
[main] INFO org.ops4j.pax.exam.junit.impl.ProbeRunner - creating PaxExam runner for class org.eclipse.persistence.testing.osgi.OSGiBundleTest
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.167 sec <<< FAILURE!
initializationError(org.eclipse.persistence.testing.osgi.OSGiBundleTest)  Time elapsed: 0.01 sec  <<< ERROR!
org.ops4j.pax.exam.TestContainerException: No service org.osgi.framework.launch.FrameworkFactory found in META-INF/services on classpath

谢谢

最佳答案

felix() 和其他框架选项很久以前就已被弃用,如果我没记错的话,早在 Pax Exam 3.3.0 之前,所以我对您的版本信息感到有点惊讶。

无论如何,如果您想在 Felix 上运行测试,只需确保 Felix 是您的类路径上唯一的 OSGi 实现,仅此而已。不需要显式选项。

关于java - Pax-exam 4 没有 felix() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29804071/

相关文章:

java - "If"语句,常量相等

java - TestNg 测试未使用 Maven 构建运行

maven - 在maven中配置不同文件类型的编码?

java - Apache Karaf OSGi 应用程序结构

java - 在 java webapp/client 中管理为 web 服务/xml 绑定(bind)生成的工件的最佳方法?

java - 如何为 j2ssh 特立独行启用调试日志?

java - sql是如何工作的以及为什么返回这个结果?

maven - Selenium Netbeans 项目到可运行的 jar

java - osgi中的bootdelegation和DynamicImport-Package有什么区别

java - 在将监听器注册到 Felix 事件管理之前,如何处理 Osgi 模块生成的事件