【发布时间】:2014-10-01 02:15:41
【问题描述】:
当我运行 Arquillian 测试时出现错误:
java.lang.NoClassDefFoundError: Lorg/openqa/selenium/WebDriver;在 java.lang.Class.getDeclaredFields0(本机方法)在 java.lang.Class.privateGetDeclaredFields(Class.java:2570) 在 java.lang.Class.getDeclaredFields(Class.java:1903) 在 org.junit.runners.model.TestClass.getSortedDeclaredFields(TestClass.java:77) 在 org.junit.runners.model.TestClass.scanAnnotatedMembers(TestClass.java:70) 在 org.junit.runners.model.TestClass.(TestClass.java:57) 在 org.junit.runners.ParentRunner.createTestClass(ParentRunner.java:88) 在 org.junit.runners.ParentRunner.(ParentRunner.java:83) 在 org.junit.runners.BlockJUnit4ClassRunner.(BlockJUnit4ClassRunner.java:63) 在 org.jboss.arquillian.junit.Arquillian.(Arquillian.java:55) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 方法)在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:408) 在 org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104) 在 org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86) 在 org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) 在 org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26) 在 org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) 在 org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33) 在 org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:36) 在 org.junit.runner.JUnitCore.run(JUnitCore.java:115) 在 org.jboss.arquillian.junit.container.JUnitTestRunner.execute(JUnitTestRunner.java:66) 在 org.jboss.arquillian.protocol.servlet.runner.ServletTestRunner.executeTest(ServletTestRunner.java:159) 在 org.jboss.arquillian.protocol.servlet.runner.ServletTestRunner.execute(ServletTestRunner.java:125) 在 org.jboss.arquillian.protocol.servlet.runner.ServletTestRunner.doGet(ServletTestRunner.java:89) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:687) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:790) 在 io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85) 在 io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:61) 在 io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) 在 org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78) 在 io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) 在 io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:113) 在 io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:56) 在 io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) 在 io.undertow.security.handlers.AuthenticationConstraintHandler.handleRequest(AuthenticationConstraintHandler.java:51) 在 io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:45) 在 io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:61) 在 io.undertow.servlet.handlers.security.ServletSecurityConstraintHandler.handleRequest(ServletSecurityConstraintHandler.java:56) 在 io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58) 在 io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:70) 在 io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76) 在 io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) 在 org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61) 在 io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) 在 io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) 在 io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:240) 在 io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:227) 在 io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:73) 在 io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:146) 在 io.undertow.server.Connectors.executeRootHandler(Connectors.java:177) 在 io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:727) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:745) 引起: java.lang.ClassNotFoundException: org.openqa.selenium.WebDriver 来自 [来自服务模块加载器的模块“deployment.sp.war:main”] 在 org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:213) 在 org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:459) 在 org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:408) 在 org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:389) 在 org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:134) ... 56 更多
我的 pom.xml:
<!--Tests--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${version.junit}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.jboss.arquillian.junit</groupId> <artifactId>arquillian-junit-container</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.jboss.arquillian.extension</groupId> <artifactId>arquillian-drone-webdriver-depchain</artifactId> <type>pom</type> <scope>test</scope> </dependency> <dependency> <groupId>xerces</groupId> <artifactId>xercesImpl</artifactId> <version>2.11.0</version> <scope>test</scope> </dependency> <dependency> <groupId>org.wildfly</groupId> <artifactId>wildfly-arquillian-container-embedded</artifactId> <version>8.1.0.Final</version> <scope>test</scope> </dependency> <dependency> <groupId>org.jboss.arquillian.extension</groupId> <artifactId>arquillian-angularjs-graphene</artifactId> <version>1.2.0.Alpha1</version> <type>pom</type> </dependency> <dependency> <groupId>org.jboss.shrinkwrap.resolver</groupId> <artifactId>shrinkwrap-resolver-depchain</artifactId> <version>${version.shrinkwrap.resolvers}</version> <scope>test</scope> <type>pom</type> </dependency>
我将测试网络存档打包如下:
public class Deployments {
public static Archive createDeployment() {
return ShrinkWrap.create(MavenImporter.class)
.loadPomFromFile("/Users/alekspo/Documents/Development/Java/WildFly/sp/pom.xml")
.importBuildOutput().as(WebArchive.class);
}
}
知道为什么会出现这样的 NoClassDefFound 错误吗?
【问题讨论】:
标签: java maven junit jboss jboss-arquillian