Issue 7289 in selenium: HtmlUnitDriver crashes with java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal

48 views
Skip to first unread message

sele...@googlecode.com

unread,
May 1, 2014, 2:41:51 PM5/1/14
to selenium-develope...@googlegroups.com
Status: New
Owner: ----
Labels: Type-Defect Priority-Medium Status-Untriaged

New issue 7289 by mark.le...@gmail.com: HtmlUnitDriver crashes with
java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal
http://code.google.com/p/selenium/issues/detail?id=7289

Using selenium-java-2.41.0 and simply:
WebDriver driver = new HtmlUnitDriver();
crashes with following:

java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2413)
at java.lang.Class.getDeclaredConstructors(Class.java:1855)
at org.codehaus.groovy.reflection.CachedClass$2$1.run(CachedClass.java:69)
at java.security.AccessController.doPrivileged(Native Method)
at
org.codehaus.groovy.reflection.CachedClass$2.initValue(CachedClass.java:66)
at
org.codehaus.groovy.reflection.CachedClass$2.initValue(CachedClass.java:64)
at org.codehaus.groovy.util.LazyReference.getLocked(LazyReference.java:46)
at org.codehaus.groovy.util.LazyReference.get(LazyReference.java:33)
at
org.codehaus.groovy.reflection.CachedClass.getConstructors(CachedClass.java:258)
at groovy.lang.MetaClassImpl.<init>(MetaClassImpl.java:189)
at groovy.lang.MetaClassImpl.<init>(MetaClassImpl.java:193)
at
groovy.lang.MetaClassRegistry$MetaClassCreationHandle.createNormalMetaClass(MetaClassRegistry.java:158)
at
groovy.lang.MetaClassRegistry$MetaClassCreationHandle.createWithCustomLookup(MetaClassRegistry.java:148)
at
groovy.lang.MetaClassRegistry$MetaClassCreationHandle.create(MetaClassRegistry.java:131)
at
org.codehaus.groovy.reflection.ClassInfo.getMetaClassUnderLock(ClassInfo.java:175)
at
org.codehaus.groovy.reflection.ClassInfo.getMetaClass(ClassInfo.java:192)
at
org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.getMetaClass(MetaClassRegistryImpl.java:255)
at
org.codehaus.groovy.runtime.InvokerHelper.getMetaClass(InvokerHelper.java:806)
at
org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallConstructorSite(CallSiteArray.java:84)
at
org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:57)
at
org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:182)
at
org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:190)
at
net.sourceforge.sebase.demos.HeadlessTest.test_HtmlUnit(HeadlessTest.groovy:43)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at junit.framework.TestCase.runTest(TestCase.java:176)
at junit.framework.TestCase.runBare(TestCase.java:141)
at junit.framework.TestResult$1.protect(TestResult.java:122)
at junit.framework.TestResult.runProtected(TestResult.java:142)
at junit.framework.TestResult.run(TestResult.java:125)
at junit.framework.TestCase.run(TestCase.java:129)
at junit.framework.TestSuite.runTest(TestSuite.java:255)
at junit.framework.TestSuite.run(TestSuite.java:250)
at
org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:84)
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)
Caused by: java.lang.ClassNotFoundException: org.w3c.dom.ElementTraversal
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
... 67 more



--
You received this message because this project is configured to send all
issue notifications to this address.
You may adjust your notification preferences at:
https://code.google.com/hosting/settings

sele...@googlecode.com

unread,
May 1, 2014, 2:43:21 PM5/1/14
to selenium-develope...@googlegroups.com

Comment #1 on issue 7289 by mark.le...@gmail.com: HtmlUnitDriver crashes
with java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal
http://code.google.com/p/selenium/issues/detail?id=7289

I found similar issue #5245. Note that I am not using poi-ooxml as in that
issue. I anyway tried the explicit dependency on xml-apis version 1.4.01,
as suggested in that issue, which resulted in:

java.lang.NoSuchMethodError:
org.apache.http.impl.client.AbstractHttpClient.execute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/client/methods/CloseableHttpResponse;
at
com.gargoylesoftware.htmlunit.HttpWebConnection.getResponse(HttpWebConnection.java:167)
at
com.gargoylesoftware.htmlunit.WebClient.loadWebResponseFromWebConnection(WebClient.java:1281)
at
com.gargoylesoftware.htmlunit.WebClient.loadWebResponse(WebClient.java:1198)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:307)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:376)
at org.openqa.selenium.htmlunit.HtmlUnitDriver.get(HtmlUnitDriver.java:476)
at org.openqa.selenium.htmlunit.HtmlUnitDriver.get(HtmlUnitDriver.java:465)
at org.openqa.selenium.WebDriver$get.call(Unknown Source)
at
org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
at
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
at
net.sourceforge.sebase.demos.HeadlessTest.test_HtmlUnit(HeadlessTest.groovy:44)

sele...@googlecode.com

unread,
May 1, 2014, 2:44:49 PM5/1/14
to selenium-develope...@googlegroups.com

Comment #2 on issue 7289 by mark.le...@gmail.com: HtmlUnitDriver crashes
with java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal
http://code.google.com/p/selenium/issues/detail?id=7289

If I downgrade my selenium-java to version 2.24.1, as mentioned in issue
#5245, this problem goes away. However, this is not a satisfactory
workaround!

sele...@googlecode.com

unread,
May 4, 2014, 3:15:18 PM5/4/14
to selenium-develope...@googlegroups.com
Updates:
Status: NeedsClarification
Labels: Browser-HtmlUnit

Comment #3 on issue 7289 by barancev: HtmlUnitDriver crashes with
java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal
http://code.google.com/p/selenium/issues/detail?id=7289

Please tell us what's on your project classpath?

If you use maven run mvn dependency:tree

sele...@googlecode.com

unread,
May 4, 2014, 4:23:01 PM5/4/14
to selenium-develope...@googlegroups.com

Comment #4 on issue 7289 by mark.le...@gmail.com: HtmlUnitDriver crashes
with java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal
http://code.google.com/p/selenium/issues/detail?id=7289

I found the culprit on my classpath is: http-builder:jar:0.7.1:compile!

My entire mvn dependency:tree is:
[INFO] net.sourceforge.sebase:groovy:jar:1.2.0
[INFO] +- junit:junit:jar:4.11:test
[INFO] | \- org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] +- org.seleniumhq.selenium:selenium-java:jar:2.39.0:test
[INFO] | +- org.seleniumhq.selenium:selenium-chrome-driver:jar:2.41.0:test
[INFO] | +-
org.seleniumhq.selenium:selenium-htmlunit-driver:jar:2.41.0:test
[INFO] | | \- net.sourceforge.htmlunit:htmlunit:jar:2.13:test
[INFO] | | +- xalan:xalan:jar:2.7.1:test
[INFO] | | | \- xalan:serializer:jar:2.7.1:test
[INFO] | | +- org.apache.commons:commons-lang3:jar:3.1:test
[INFO] | | +- org.apache.httpcomponents:httpmime:jar:4.3.1:test
[INFO] | | +- net.sourceforge.htmlunit:htmlunit-core-js:jar:2.13:test
[INFO] | | +- net.sourceforge.cssparser:cssparser:jar:0.9.11:test
[INFO] | | | \- org.w3c.css:sac:jar:1.3:test
[INFO] | | \-
org.eclipse.jetty:jetty-websocket:jar:8.1.12.v20130726:test
[INFO] | | +- org.eclipse.jetty:jetty-util:jar:8.1.12.v20130726:test
[INFO] | | +- org.eclipse.jetty:jetty-io:jar:8.1.12.v20130726:test
[INFO] | | \- org.eclipse.jetty:jetty-http:jar:8.1.12.v20130726:test
[INFO] | +- org.seleniumhq.selenium:selenium-firefox-driver:jar:2.41.0:test
[INFO] | | +- commons-io:commons-io:jar:2.2:test
[INFO] | | \- org.apache.commons:commons-exec:jar:1.1:test
[INFO] | +- org.seleniumhq.selenium:selenium-ie-driver:jar:2.41.0:test
[INFO] | | +- net.java.dev.jna:jna:jar:3.4.0:test
[INFO] | | \- net.java.dev.jna:platform:jar:3.4.0:test
[INFO] | +- org.seleniumhq.selenium:selenium-safari-driver:jar:2.41.0:test
[INFO] | +- org.seleniumhq.selenium:selenium-support:jar:2.41.0:test
[INFO] | | \- org.seleniumhq.selenium:selenium-api:jar:2.41.0:test
[INFO] | \- org.webbitserver:webbit:jar:0.4.14:test
[INFO] | \- io.netty:netty:jar:3.5.2.Final:test
[INFO] +- com.github.detro.ghostdriver:phantomjsdriver:jar:1.1.0:test
[INFO] | +- org.seleniumhq.selenium:selenium-remote-driver:jar:2.39.0:test
[INFO] | | +- cglib:cglib-nodep:jar:2.1_3:test
[INFO] | | +- org.json:json:jar:20080701:test
[INFO] | | \- com.google.guava:guava:jar:15.0:test
[INFO] | \- org.seleniumhq.selenium:selenium-server:jar:2.39.0:test
[INFO] | +- org.bouncycastle:bcprov-jdk15on:jar:1.48:test
[INFO] | +- org.bouncycastle:bcpkix-jdk15on:jar:1.48:test
[INFO] | +- mx4j:mx4j-tools:jar:3.0.1:test
[INFO] | +- org.mortbay.jetty:servlet-api-2.5:jar:6.1.9:test
[INFO] | +- org.seleniumhq.selenium:jetty-repacked:jar:7.6.1:test
[INFO] | +- net.jcip:jcip-annotations:jar:1.0:test
[INFO] | \- org.yaml:snakeyaml:jar:1.8:test
[INFO] +- commons-lang:commons-lang:jar:2.4:compile
[INFO] +-
org.codehaus.groovy.modules.http-builder:http-builder:jar:0.7.1:compile
[INFO] | +- org.apache.httpcomponents:httpclient:jar:4.2.1:compile
[INFO] | | +- org.apache.httpcomponents:httpcore:jar:4.2.1:compile
[INFO] | | \- commons-logging:commons-logging:jar:1.1.1:compile
[INFO] | +- net.sf.json-lib:json-lib:jar:jdk15:2.3:compile
[INFO] | | +- commons-beanutils:commons-beanutils:jar:1.8.0:compile
[INFO] | | +- commons-collections:commons-collections:jar:3.2.1:compile
[INFO] | | \- net.sf.ezmorph:ezmorph:jar:1.0.6:compile
[INFO] | +- net.sourceforge.nekohtml:nekohtml:jar:1.9.16:compile
[INFO] | | \- xerces:xercesImpl:jar:2.9.1:compile
[INFO] | | \- xml-apis:xml-apis:jar:1.3.04:compile
[INFO] | \- xml-resolver:xml-resolver:jar:1.2:compile
[INFO] +- org.apache.poi:poi:jar:3.10-FINAL:compile
[INFO] | \- commons-codec:commons-codec:jar:1.5:compile
[INFO] \- org.codehaus.groovy:groovy-all:jar:2.1.5:compile

sele...@googlecode.com

unread,
May 10, 2014, 2:18:50 PM5/10/14
to selenium-develope...@googlegroups.com
Updates:
Status: Invalid

Comment #5 on issue 7289 by barancev: HtmlUnitDriver crashes with
java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal
http://code.google.com/p/selenium/issues/detail?id=7289

HtmlUnitDriver requires xml-apis version 1.4, reconfigure your POM file

sele...@googlecode.com

unread,
May 12, 2014, 10:14:41 AM5/12/14
to selenium-develope...@googlegroups.com

Comment #6 on issue 7289 by mark.le...@gmail.com: HtmlUnitDriver crashes
with java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal
http://code.google.com/p/selenium/issues/detail?id=7289

Did you see my comment #1: "I anyway tried the explicit dependency on
xml-apis version 1.4.01..."?
I cannot find find version 1.4 in Maven Central.

sele...@googlecode.com

unread,
May 12, 2014, 11:02:31 AM5/12/14
to selenium-develope...@googlegroups.com

Comment #7 on issue 7289 by barancev: HtmlUnitDriver crashes with
java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal
http://code.google.com/p/selenium/issues/detail?id=7289

Exclude unwanted dependencies (see [1]), add an exclusion to http-builder
that loads old version of xml-apis

[1]
http://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html

sele...@googlecode.com

unread,
May 12, 2014, 11:37:53 AM5/12/14
to selenium-develope...@googlegroups.com

Comment #8 on issue 7289 by mark.le...@gmail.com: HtmlUnitDriver crashes
with java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal
http://code.google.com/p/selenium/issues/detail?id=7289

I am begining to feel there may be a problem with Maven resolving
dependencies?

With http-builder completely removed, I get (edited):
[INFO] | +-
org.seleniumhq.selenium:selenium-htmlunit-driver:jar:2.41.0:test
[INFO] | | +- net.sourceforge.htmlunit:htmlunit:jar:2.13:test
[INFO] | | | +- xerces:xercesImpl:jar:2.11.0:test
[INFO] | | | | \- xml-apis:xml-apis:jar:1.4.01:test

If I include:
<dependency>
<groupId>org.codehaus.groovy.modules.http-builder</groupId>
<artifactId>http-builder</artifactId>
<version>[0.5.1,)</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>xml-apis</groupId>
<artifactId>xml-apis</artifactId>
</exclusion>
</exclusions>
</dependency>

I get (again, edited):
[INFO] | +-
org.seleniumhq.selenium:selenium-htmlunit-driver:jar:2.41.0:test
[INFO] | | \- net.sourceforge.htmlunit:htmlunit:jar:2.13:test
[INFO] | | +- xalan:xalan:jar:2.7.1:test
[INFO] | | | \- xalan:serializer:jar:2.7.1:test
[INFO] | | | \- xml-apis:xml-apis:jar:1.3.04:test

I do not understand what is going on. :(

sele...@googlecode.com

unread,
May 12, 2014, 1:01:07 PM5/12/14
to selenium-develope...@googlegroups.com

Comment #9 on issue 7289 by barancev: HtmlUnitDriver crashes with
java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal
http://code.google.com/p/selenium/issues/detail?id=7289

Please send questions to the selenium user group [1], this is the issue
tracker not the support forum.

[1] https://groups.google.com/forum/#!forum/selenium-users

sele...@googlecode.com

unread,
May 12, 2014, 1:36:12 PM5/12/14
to selenium-develope...@googlegroups.com

Comment #10 on issue 7289 by mark.le...@gmail.com: HtmlUnitDriver crashes
with java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal
http://code.google.com/p/selenium/issues/detail?id=7289

I finaly found my answer(s)!

According to Maven documentation[1], there is nothing wrong with the
depency resolution: "Currently, Maven 2.0 only supports using the 'nearest
definition' which means that it will use the version of the closest
dependency to your project in the tree of dependencies." From what I am
seeing, Maven 3 behaves the same way.

http-builder "conflicts" with selenium-htmlunit-driver in two different
ways. I eventually ended up using:
<dependency>
<groupId>org.codehaus.groovy.modules.http-builder</groupId>
<artifactId>http-builder</artifactId>
<version>[0.5.1,)</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>net.sourceforge.nekohtml</groupId>
<artifactId>nekohtml</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</exclusion>
</exclusions>
</dependency>
Now everything works!

[1]
https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html
Reply all
Reply to author
Forward
0 new messages