- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 pax-exam 加载、激活和访问 osgi 包。
以下源代码是我的 pax-exam 测试,它使用 native 容器使用 pax-exam 2.3 运行。
package fr.xlim.ssd.vtg.osgi;
import java.net.URISyntaxException;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.ops4j.pax.exam.Inject;
import org.ops4j.pax.exam.Option;
import org.ops4j.pax.exam.junit.Configuration;
import org.ops4j.pax.exam.junit.ExamReactorStrategy;
import org.ops4j.pax.exam.junit.JUnit4TestRunner;
import org.ops4j.pax.exam.spi.reactors.AllConfinedStagedReactorFactory;
import org.osgi.framework.BundleContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import static org.junit.Assert.assertNotNull;
import static org.ops4j.pax.exam.CoreOptions.bundle;
import static org.ops4j.pax.exam.CoreOptions.junitBundles;
import static org.ops4j.pax.exam.CoreOptions.options;
@RunWith(JUnit4TestRunner.class)
@ExamReactorStrategy(AllConfinedStagedReactorFactory.class)
public class BasicOSGILoaderTest {
private Logger logger = LoggerFactory.getLogger(BasicOSGILoaderTest.class);
@Inject
private BundleContext bundleContext;
@Configuration
public Option[] config() {
String projectRoot = null;
try {
projectRoot = ClassLoader.getSystemResource(".").toURI().toURL().toString();
projectRoot = projectRoot.toString().substring(0,projectRoot.toString().length() - 27);
logger.debug("project root: {}", projectRoot);
} catch (MalformedURLException e) {
logger.error("malformed URL to project root: {}", projectRoot, e);
throw new IllegalStateException(e);
} catch (URISyntaxException e) {
logger.error("URI Syntax Error to project root: {}", projectRoot, e);
throw new IllegalStateException(e);
}
return options(
junitBundles(),
logProfile(),
bundle(projectRoot + "libs/org.eclipse.ant.core_3.2.300.v20110511.jar"),
bundle(projectRoot + "libs/org.eclipse.core.contenttype_3.4.100.v20110423-0524.jar"),
bundle(projectRoot + "libs/org.eclipse.core.expressions_3.4.300.v20110228.jar"),
bundle(projectRoot + "libs/org.eclipse.core.jobs_3.5.100.v20110404.jar"),
bundle(projectRoot + "libs/org.eclipse.core.resources_3.7.100.v20110510-0712.jar"),
bundle(projectRoot + "libs/org.eclipse.core.runtime_3.7.0.v20110110.jar"),
bundle(projectRoot + "libs/org.eclipse.equinox.app_1.3.100.v20110321.jar"),
bundle(projectRoot + "libs/org.eclipse.equinox.common_3.6.0.v20110523.jar"),
bundle(projectRoot + "libs/org.eclipse.equinox.preferences_3.4.1.R37x_v20110725.jar"),
bundle(projectRoot + "libs/org.eclipse.equinox.registry_3.5.101.R37x_v20110810-1611.jar"),
bundle(projectRoot + "libs/org.eventb.core_2.4.0.r14093.jar"),
bundle(projectRoot + "libs/org.eventb.core.ast_2.4.0.r14093.jar"),
bundle(projectRoot + "libs/org.eventb.core.seqprover_2.4.0.r14093.jar"),
bundle(projectRoot + "libs/org.rodinp.core_1.5.0.r14093.jar"),
equinox().version("3.7.1")
);
}
@Test
public void checkBundleContext1() {
assertNotNull(bundleContext);
}
@Test
public void checkBundleContext2(BundleContext bc) {
assertNotNull(bc);
}
@Test
public void checkAccessToRodinDB() {
RodinCore.getRodinDB();
}
}
但是我有以下问题:
两个 checkBundleContext 方法都失败,注入(inject)的包上下文(使用 @Inject
)或作为测试方法的参数传递始终为 null
从 org.rodinp.core_1.5.0.r14093.jar
类 RodinCore
中访问静态方法 getRodinDb()
> 抛出一个关于 org.rodinp.core.RodinCore
的 ClassNotFoundException
,即使包 org.rodinp.core
在 Export-package 中捆绑。
最佳答案
检查您的导入。使用
import javax.inject.Inject;
Injection is indicated by a javax.inject.Inject annotation. Pax Exam's own Inject annotation of the 1.x release line is now deprecated.
关于java - BundleContext 在使用 pax-exam 的单元测试中为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9837474/
我不知道为什么 PAX 总是杀死我的进程。平台是powerpc,操作系统是Linux。从内核日志中,我可以看到如下内容: PAX: From 147.128.23.67: execution atte
我正在尝试使用 pax-maven-build 构建我的 OSGI 包同时用 pax-exam 测试它.它提供了一些 bundle ,我可以使用以下 pax-exam 测试配置进行测试: @RunWi
我是Linux PaX用户,因此要调试任何二进制文件,我需要使用 paxctl 命令禁用保护标志(每个二进制文件)。PaX 通过随机化为用户提供针对缓冲区溢出攻击等的保护,但它也禁止有意义的调试。我可
我知道这有点具体,但我已经尝试了所有我能想到的方法。我正在使用 pax-exam 运行一些集成测试,日志记录应该使用 pax-logging。 这在直接运行 felix 容器时工作正常,但如果我通过
我正在尝试使用 PAX Exam 为 bundle 设置测试。 在用Configuration注释的方法中,我设置了在运行测试之前必须加载的不同包。但是,正在测试的 bundle 还希望通过配置管理服
我正在使用 Maven pax 插件来启动 equinox 容器,我的 osgi 包应该在其中部署。由于 pax runner 默认启动 felix 容器,我已经明确给出了启动 equinox 容器的
在内核中有 PaX 的 linux 中是否可能溢出缓冲区。我想通过使用正确的输入更改返回地址来利用可执行文件。我使用的是 Ubuntu 10.04,我使用 paxtest 对其进行了测试,但我不知道结
这是我琐碎的 Pax 考试测试: package ru.focusmedia.odp.server.datastore.itests; import static org.ops4j.pax.exam
我正在为我们的项目进行 PAX 集成测试,我在类加载方面遇到了一些问题。 我在 PAX(使用的 karaf 容器)中部署了几个包。 karaf 启动后,我可以看到我的包和服务已启动并处于事件状态。但是
我被要求在我们的 RCP 应用程序上实现 PAX 日志记录。基本上我都是按照这个tutorial . 正如您可能注意到的,它表示“当您运行 RCP 应用程序时,您应该看到 Pax ConfMan 将输
我正在尝试使用 PAX Exam 设置测试,如下所示: @ExamReactorStrategy(PerMethod.class) public class AbstractTest { @C
过去几天我一直在努力让 docker 容器在 Gentoo Hardened 上正确运行。 我花了几天才发现的第一个问题是由我自己的偏执引起的:我将 Docker 根目录放入的分区挂载了 nosuid
我在 DS 中编写了一个 @Component,它应该在多个实例中实例化和激活。为了测试我已经编写了一个 pax 考试测试,我启动了 karaf 并添加了 scr。一切工作正常,但是......直到测
我最近开始与大约 40 名其他开发人员一起从事一个项目。我们将 OSGi 与 Apache Felix 一起使用。我们使用 Maven 和 maven-pax-plugin 构建和部署。 OSGi 和
我正在尝试在新安装的 Apache Felix 容器中使用 pax 日志记录。安装了以下 bundle : lb START LEVEL 1 ID|State |Level|N
在pax-web(pax-web 6.0.3,jetty 9.3.14)的jetty.xml中,我定义了一个像这样的RewriteHandler:
我目前正在使用 tar 来提取文件... tail -n+$ARCHIVE_START_LINE $archiveFilename | tar -xzm -C / 我需要使用 pax 而不是 tar,
我有运行 android 的 Pax A920。 那么如何在java中使用打印服务呢? 最佳答案 我建议你使用 Neptune api。你可以google pax 920 neptune api de
我已经在一个包中编写了插件,并将它们作为 pax-logging-log4j2 的片段提供,这非常完美。现在我想要另一个片段有另一组附加器并执行相同的操作。两个包都注册为 pax-logging-lo
我使用 felix 和 pax-cdi 0.13 并焊接。我在 B 中有两个 bundle A。在 bundle A 中,我有 BundleTracker 和定制器,在 bundle B 中我有 CD
我是一名优秀的程序员,十分优秀!