2013-11-16 2 views
0

Я использую Arquillian и TestNG под JBoss AS 7 для тестирования проекта Maven, и он работал отлично. После того, как я добавил HtmlUnit к моему POM, как это:Почему Arquillian падает после добавления htmlunit в POM?

<dependency> 
    <groupId>net.sourceforge.htmlunit</groupId> 
    <artifactId>htmlunit</artifactId> 
    <version>2.9</version> 
    <scope>provided</scope> 
</dependency> 

Arquillian испытания начались сразу врезаться со следующей ошибкой:

FAILED CONFIGURATION: @BeforeSuite arquillianBeforeSuite 
java.lang.RuntimeException: Could not create new instance of class org.jboss.arquillian.test.impl.EventTestRunnerAdaptor 
    at org.jboss.arquillian.test.spi.SecurityActions.newInstance(SecurityActions.java:160) 
    at org.jboss.arquillian.test.spi.SecurityActions.newInstance(SecurityActions.java:111) 
    at org.jboss.arquillian.test.spi.SecurityActions.newInstance(SecurityActions.java:97) 
    at org.jboss.arquillian.test.spi.TestRunnerAdaptorBuilder.build(TestRunnerAdaptorBuilder.java:52) 
    at org.jboss.arquillian.testng.Arquillian.arquillianBeforeSuite(Arquillian.java:64) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:84) 
    at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:564) 
    at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:213) 
    at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:138) 
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:277) 
    at org.testng.SuiteRunner.run(SuiteRunner.java:240) 
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) 
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) 
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1224) 
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1149) 
    at org.testng.TestNG.run(TestNG.java:1057) 
    at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111) 
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204) 
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175) 
Caused by: java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
    at java.lang.reflect.Constructor.newInstance(Unknown Source) 
    at org.jboss.arquillian.test.spi.SecurityActions.newInstance(SecurityActions.java:156) 
    ... 22 more 
Caused by: java.lang.NoClassDefFoundError: org/apache/xml/serializer/TreeWalker 
    at org.apache.xalan.processor.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:823) 
    at __redirected.__TransformerFactory.newTransformer(__TransformerFactory.java:133) 
    at org.jboss.shrinkwrap.descriptor.spi.node.dom.XmlDomDescriptorExporterImpl.to(XmlDomDescriptorExporterImpl.java:66) 
    at org.jboss.shrinkwrap.descriptor.spi.node.NodeDescriptorExporterImpl.to(NodeDescriptorExporterImpl.java:55) 
    at org.jboss.shrinkwrap.descriptor.spi.node.NodeDescriptorExporterImpl.to(NodeDescriptorExporterImpl.java:30) 
    at org.jboss.shrinkwrap.descriptor.spi.node.dom.XmlDomDescriptorExporter.to(XmlDomDescriptorExporter.java:51) 
    at org.jboss.shrinkwrap.descriptor.spi.node.dom.XmlDomDescriptorExporter.to(XmlDomDescriptorExporter.java:34) 
    at org.jboss.shrinkwrap.descriptor.spi.node.NodeDescriptorImplBase.exportTo(NodeDescriptorImplBase.java:55) 
    at org.jboss.shrinkwrap.descriptor.spi.DescriptorImplBase.exportAsString(DescriptorImplBase.java:84) 
    at org.jboss.arquillian.config.impl.extension.ConfigurationSysPropResolver.resolveSystemProperties(ConfigurationSysPropResolver.java:54) 
    at org.jboss.arquillian.config.impl.extension.ConfigurationRegistrar.loadConfiguration(ConfigurationRegistrar.java:62) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94) 
    at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99) 
    at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81) 
    at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:135) 
    at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:115) 
    at org.jboss.arquillian.core.impl.ManagerImpl.start(ManagerImpl.java:261) 
    at org.jboss.arquillian.test.impl.EventTestRunnerAdaptor.<init>(EventTestRunnerAdaptor.java:56) 
    ... 27 more 
Caused by: java.lang.ClassNotFoundException: org.apache.xml.serializer.TreeWalker 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    ... 49 more 

Мои знания о JBoss и Maven ограничен, но это, кажется, что проблема в том, что htmlunit имеет зависимость от xalan, который, по-видимому, также используется Аркиллиан, но я не знаю, почему это все испортит. Есть идеи?

+1

Скорее всего, они зависят от разных версий библиотеки XML (xalan). Вы можете попробовать mvn dependency: tree go получить полную зависимость «graph» вашего проекта. Если вы также выполняете mvn -X dependency: tree, вы получите информацию о том, какие версии отброшены в пользу другого. Если вы разместите полный файл pom.xml, мы сможем предоставить вам более подробную информацию. –

+0

@Peter Liljenberg: Нет, они используют ту же версию, но ваш комментарий привел меня к решению, которое я опубликую в качестве ответа. –

ответ

0

Как оказалось, архив сериализатору-2.7.1.jar, который является частью Xalan, упакована неправильно (оно не может быть распакованы) в JBoss Maven хранилище. Ошибки, подобные этим, являются настоящей болью для отладки, поскольку нет сообщения об ошибке, указывающего на фактическую проблему (спасибо, Java). Во всяком случае, я решил проблему, скопировав тот же архив из установки JBoss в локальный репозиторий Maven.

+1

Должно быть сообщение об ошибке, если вы используете maven с опцией debug ('mvn -X'). Вы проверили это? Хотя вы, вероятно, должны использовать центральный центр maven, если это возможно, большинство артефактов JBoss есть. – eis

+0

@eis: Спасибо, я буду помнить об этом в будущем. –