Java 使用Pax检查的OSGi测试失败,未发现容器错误
使用Pax检查的OSGi测试失败,出现“未找到容器错误” 发生这种情况是因为我将表单Java7升级到Java8,然后我不得不将pax-exam-2.3.0.jar(与Java8不兼容)更改为pax-exam-4.4.0.jar。以及他们的其他依赖性。在前面的配置中,我们曾经编写felix(),但现在已经改变了 现在如何启动felix容器 配置:Java 使用Pax检查的OSGi测试失败,未发现容器错误,java,osgi,apache-felix,pax-exam,Java,Osgi,Apache Felix,Pax Exam,使用Pax检查的OSGi测试失败,出现“未找到容器错误” 发生这种情况是因为我将表单Java7升级到Java8,然后我不得不将pax-exam-2.3.0.jar(与Java8不兼容)更改为pax-exam-4.4.0.jar。以及他们的其他依赖性。在前面的配置中,我们曾经编写felix(),但现在已经改变了 现在如何启动felix容器 配置: @RunWith(PaxExam.class) @ExamReactorStrategy(PerMethod.class) public class G
@RunWith(PaxExam.class)
@ExamReactorStrategy(PerMethod.class)
public class GibsonMiniAGLTest
{
@Configuration
public Option[] config() {
return options(
vmOption("-Dcom.sun.management.jmxremote"),
systemPackages("sun.misc",
"sun.security.util",
"sun.security.x509",
"com.sun.media.imageioimpl.plugins.jpeg2000"
),
bootDelegationPackages(
"sun.misc.*",
"com.sun.*"
),
bundle("abc.jar"),
junitBundles()
);
}
}
Ant文件:
<target name="run_STOSGI">
<property file="build/jamunTimeOut.properties"/>
<echo message="Calculated TimeOut for Jamun_Tests in MilliSeconds = ..........." />
<echo message="${timeout}" />
<junit printsummary="yes" showoutput="yes" timeout="${timeout}" haltonfailure="on" maxmemory="256M" fork="on">
<jvmarg value="-Dorg.xml.sax.driver=${saxParser}" />
<classpath>
<pathelement path="${jamun.path}" />
<pathelement path="${junit.path}" />
<pathelement path="${jar}/core.jar" />
</classpath>
<formatter type="xml" />
<sysproperty key="BAT_PLUGIN" value="${BAT_PLUGIN}"/>
<test name="com.adobe.gibsontests.SmokeTestOSGIosgi" />
</junit>
<move todir="${smokeTest_Location}" failonerror="false" overwrite="true" >
<fileset dir="${smoketest_temp}"/>
</move>
</target>
堆栈跟踪:
<testcase classname="com.adobe.gibsontests.SmokeTestOSGIosgi" name="initializationError" time="0.004">
<error message="No TestContainer implementation in Classpath" type="org.ops4j.pax.exam.TestContainerException">org.ops4j.pax.exam.TestContainerException: No TestContainer implementation in Classpath
at org.ops4j.pax.exam.spi.PaxExamRuntime.sanityCheck(PaxExamRuntime.java:266)
at org.ops4j.pax.exam.spi.PaxExamRuntime.getTestContainerFactory(PaxExamRuntime.java:79)
at org.ops4j.pax.exam.spi.reactors.ReactorManager.createsTestContainerFactory(ReactorManager.java:325)
at org.ops4j.pax.exam.spi.reactors.ReactorManager.createReactor(ReactorManager.java:302)
at org.ops4j.pax.exam.spi.reactors.ReactorManager.prepareReactor(ReactorManager.java:181)
at org.ops4j.pax.exam.junit.impl.ProbeRunner.<init>(ProbeRunner.java:78)
at org.ops4j.pax.exam.junit.PaxExam.createDelegate(PaxExam.java:82)
at org.ops4j.pax.exam.junit.PaxExam.<init>(PaxExam.java:73)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
org.ops4j.pax.exam.TestContainerException:类路径中没有TestContainer实现
访问org.ops4j.pax.exam.spi.PaxExamRuntime.sanityCheck(PaxExamRuntime.java:266)
位于org.ops4j.pax.exam.spi.PaxExamRuntime.getTestContainerFactory(PaxExamRuntime.java:79)
在org.ops4j.pax.exam.spi.reactors.ReactorManager.createsTestContainerFactory上(ReactorManager.java:325)
位于org.ops4j.pax.exam.spi.reactors.ReactorManager.createReactor(ReactorManager.java:302)
位于org.ops4j.pax.exam.spi.reactors.ReactorManager.prepareReactor(ReactorManager.java:181)
位于org.ops4j.pax.exam.junit.impl.ProbeRunner.init(ProbeRunner.java:78)
位于org.ops4j.pax.exam.junit.PaxExam.createDelegate(PaxExam.java:82)
位于org.ops4j.pax.exam.junit.PaxExam.init(PaxExam.java:73)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:423)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:423)
有人能指出我遗漏了什么吗
我尝试在单机版中运行pax考试,但也失败了,错误如下:
org.ops4j.pax.exam.TestContainerException:在类路径上的META-INF/services中找不到服务org.osgi.framework.launch.FrameworkFactory,因为错误消息指出“类路径中没有TestContainer实现”。 您需要将容器实现放到类路径上 有两种选择。最基本的是: 1.:
org.ops4j.pax.exam
pax考试容器本机
测试
2.:
org.ops4j.pax.exam
pax检查集装箱分叉
测试
还有一些更复杂的,如karaf容器等。因为错误消息指出“类路径中没有TestContainer实现”。 您需要将容器实现放到类路径上 有两种选择。最基本的是: 1.:
org.ops4j.pax.exam
pax考试容器本机
测试
2.:
org.ops4j.pax.exam
pax检查集装箱分叉
测试
还有一些更复杂的,如卡拉夫集装箱等