2012-12-14 181 views
2

我是Pax考試的新手,試圖通過調用我的OSGI服務來運行測試。在eclipse中運行paxexam測試時,出現以下異常。PaxExam異常運行測試

java.lang.ClassNotFoundException: org.ops4j.pax.swissbox.framework.ServiceLookupException (no  security manager: RMI class loader disabled) 
at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:373) 
at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:163) 
at java.rmi.server.RMIClassLoader$2.loadClass(RMIClassLoader.java:620) 
at java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:247) 
at sun.rmi.server.MarshalInputStream.resolveClass(MarshalInputStream.java:197) 
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1574) 
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1495) 
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1731) 
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) 
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946) 
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870) 
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752) 
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) 
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350) 
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:225) 
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:142) 
at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:178) 
at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:132) 
at $Proxy9.remoteCall(Unknown Source) 
at org.ops4j.pax.exam.rbc.client.intern.RemoteBundleContextClientImpl$1.invoke(RemoteBundleContextClientImpl.java:112) 
at $Proxy10.call(Unknown Source) 
at org.ops4j.pax.exam.rbc.client.intern.RemoteBundleContextClientImpl.call(RemoteBundleContextClientImpl.java:287) 
at org.ops4j.pax.exam.container.remote.RBCRemoteTarget.call(RBCRemoteTarget.java:70) 
at org.ops4j.pax.exam.container.def.internal.PaxRunnerTestContainer.call(PaxRunnerTestContainer.java:187) 
at org.ops4j.pax.exam.spi.reactors.AllConfinedStagedReactor.invoke(AllConfinedStagedReactor.java:74) 
at org.ops4j.pax.exam.junit.JUnit4TestRunner$2.evaluate(JUnit4TestRunner.java:284) 
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263) 
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:69) 
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:48) 
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) 
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) 
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) 
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) 
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) 
at org.junit.runners.ParentRunner.run(ParentRunner.java:292) 
at org.ops4j.pax.exam.junit.JUnit4TestRunner.run(JUnit4TestRunner.java:93) 
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) 
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 

任何想法爲什麼會發生這種情況?當我在下面的代碼中啓用@Inject DataGenerator行時會發生這種情況。

@RunWith(JUnit4TestRunner.class) 
@ExamReactorStrategy(AllConfinedStagedReactorFactory.class) 
public class SampleTest{ 

    @Inject 
    private DataGenerator dataService; 

    @Inject 
    private BundleContext bundleContext; 

感謝, 拉胡爾

+0

看起來你錯過了對swissbox的依賴。你能否提供一些關於你使用的pax考試版本和確切設置的更多細節。也許你可以上傳一個示例項目到github或類似的。 –

+0

另請參閱:https://ops4j1.jira.com/browse/PAXEXAM-493 – Raman

回答

0

按照PAXEXAM-493,異常的根本原因是,你DataGenerator服務不被容器中找到。但是,通常Pax考試將「很好地」報告此服務失敗查找。在這種情況下,當Pax考試試圖加載類ServiceLookupException爲了做到這一點時,ServiceLookupException本身的類查找失敗(由於某種原因尚未由Pax開發人員識別)。

相關問題