2016-09-23 88 views
0

我正在学习camel-cxf服务器的骆驼测试工具包。据我所知,使用Junit是因为我们可以在没有服务器的情况下进行检查。但是当我运行这个Junit时,它会显示下面的异常。骆驼测试:导致:java.lang.ClassNotFoundException:com.ibm.ws.bootstrap.RASWsLoggerFactory

堆栈跟踪:

java.lang.NoClassDefFoundError: com.ibm.ws.bootstrap.RASWsLoggerFactory 
    at java.lang.J9VMInternals.verifyImpl(Native Method) 
    at java.lang.J9VMInternals.verify(J9VMInternals.java:85) 
    at java.lang.J9VMInternals.initialize(J9VMInternals.java:162) 
    at com.ibm.websphere.naming.WsnInitialContextFactory.<clinit>(WsnInitialContextFactory.java:79) 
    at java.lang.J9VMInternals.initializeImpl(Native Method) 
    at java.lang.J9VMInternals.initialize(J9VMInternals.java:228) 
    at java.lang.Class.forNameImpl(Native Method) 
    at java.lang.Class.forName(Class.java:170) 
    at javax.naming.spi.NamingManager$3.run(NamingManager.java:873) 
    at javax.naming.spi.NamingManager$3.run(NamingManager.java:870) 
    at java.security.AccessController.doPrivileged(AccessController.java:229) 
    at javax.naming.spi.NamingManager.factoryForName(NamingManager.java:869) 
    at javax.naming.spi.NamingManager.factoryForName(NamingManager.java:820) 
    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:246) 
    at javax.naming.InitialContext.initializeDefaultInitCtx(InitialContext.java:318) 
    at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:348) 
    at javax.naming.InitialContext.internalInit(InitialContext.java:286) 
    at javax.naming.InitialContext.<init>(InitialContext.java:211) 
    at org.apache.camel.test.junit4.CamelTestSupport.createJndiContext(CamelTestSupport.java:506) 
    at org.apache.camel.test.junit4.CamelTestSupport.createRegistry(CamelTestSupport.java:492) 
    at org.apache.camel.test.junit4.CamelTestSupport.createCamelContext(CamelTestSupport.java:486) 
    at org.apache.camel.test.junit4.CamelTestSupport.doSetUp(CamelTestSupport.java:246) 
    at org.apache.camel.test.junit4.CamelTestSupport.setUp(CamelTestSupport.java:216) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) 
    at java.lang.reflect.Method.invoke(Method.java:611) 
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) 
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) 
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24) 
    at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74) 
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) 
    at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:83) 
    at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:55) 
    at org.junit.rules.RunRules.evaluate(RunRules.java:20) 
    at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:88) 
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) 
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) 
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) 
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) 
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) 
    at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) 
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) 
    at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71) 
    at org.junit.runners.ParentRunner.run(ParentRunner.java:309) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49) 
    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) 
Caused by: java.lang.ClassNotFoundException: com.ibm.ws.bootstrap.RASWsLoggerFactory 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:434) 
    at java.lang.ClassLoader.loadClassHelper(ClassLoader.java:665) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:644) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:358) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:627) 
    ... 55 more 

下面是我的代码:

import java.io.FileNotFoundException; 
import java.io.StringReader; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 

import javax.xml.bind.JAXBContext; 
import javax.xml.bind.Unmarshaller; 

import org.apache.camel.EndpointInject; 
import org.apache.camel.Exchange; 
import org.apache.camel.LoggingLevel; 
import org.apache.camel.ProducerTemplate; 
import org.apache.camel.builder.RouteBuilder; 
import org.apache.camel.component.mock.MockEndpoint; 
import org.apache.camel.test.junit4.CamelTestSupport; 
import org.apache.camel.test.spring.CamelSpringJUnit4ClassRunner; 
import org.apache.camel.test.spring.DisableJmx; 
import org.junit.Before; 
import org.junit.Ignore; 
import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.springframework.test.context.ContextConfiguration; 
import org.springframework.util.Log4jConfigurer; 

import com.bac.baclws.ngen.command.AdministerContactPreferencesRequest; 
import com.bac.baclws.ngen.command.RetrieveContactPreferencesRequest; 

@RunWith(CamelSpringJUnit4ClassRunner.class) 
@DisableJmx(true) 
//@Ignore 
@ContextConfiguration(locations = { 

     "classpath:/META-INF/spring/mockTest.xml" 
     }) 
public class DataValidationTest extends CamelTestSupport { 
    @EndpointInject(uri="direct:rcp") 
    ProducerTemplate template; 



    @Test 
    public void testQuote() throws Exception { 

    String s="<p:Account xmlns:p=\"http://url.xsd\">" 
    +" <p:data>" 
    + " <p:number>30013</p:number>" 


    +" </data>" 


    +"  </p:Account>"; 
Map<String, Object> headers=new HashMap<String, Object>(); 

    headers.put("header1", "value1"); 
    headers.put("header2", "value2"); 




     template.sendBodyAndHeaders(s, headers); 

    } 


} 

class RCP extends RouteBuilder{ 

    @Override 
    public void configure() throws Exception { 
     from("direct:rcp") 
     .log(LoggingLevel.DEBUG, "${body}"); 

    } 

} 

下面是我的XML

<?xml version="1.0" encoding="UTF-8"?> 

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cxf="http://camel.apache.org/schema/cxf" 
    xmlns:camel="http://camel.apache.org/schema/spring" xmlns:jaxrs="http://cxf.apache.org/jaxrs" 
    xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xsi:schemaLocation=" 
     http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
     http://camel.apache.org/schema/cxf 
     http://camel.apache.org/schema/cxf/camel-cxf.xsd 
     http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd 
     http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd 
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd 
     http://www.springframework.org/schema/aop 
     http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"> 



    <cxf:rsServer id="EndPoint" 
     address="/PreferenceReporting/account" serviceClass="myEndPoint.EndpointManagement"> 



    </cxf:rsServer> 

    <cxf:rsClient id="EndPointClient" 
     address="/PreferenceReporting/account" serviceClass="myEndPoint.EndpointManagement">   
    </cxf:rsClient> 


</beans> 

请帮我在那里我会错

回答

1

我想它不是一个问题m与骆驼,你在你的类路径中添加了ws.runtime jar,这是创建问题的原因,如果你想运行junit和ws.runtime,你必须根据ibm jdk来设置你的上下文和JVM,否则你可以跳过罐子的单元测试用例

<plugins> 
    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.12.2</version> 
    <configuration> 
     <classpathDependencyExcludes> 
     <classpathDependencyExclude>com.ibm:ws.runtime</classpathDependencyExclude> 
     </classpathDependencyExcludes> 
    </configuration> 
    </plugin> 
</plugins 
+0

只是一个更新,对于ws.runtime依赖的定义是这样的较新版本:com.ibm.websphere.ws:com.ibm.ws.runtime – max