在Netbeans平台项目中使用WebDriver进行链接错误 [英] Linkage error using webdriver in a Netbeans platform project

查看:91
本文介绍了在Netbeans平台项目中使用WebDriver进行链接错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图在Netbeans平台项目中使用Webdrive,但是我不断收到以下错误:

I'm trying to use webdrive in a Netbeans platform project, but i keep getting the following error:

java.lang.LinkageError: loader constraint violation in interface itable initialization: when resolving method "com.gargoylesoftware.htmlunit.html.DomNode.getAttributes()Lorg/w3c/dom/NamedNodeMap;" the class loader (instance of org/netbeans/StandardModule$OneModuleClassLoader) of the current class, com/gargoylesoftware/htmlunit/html/DomNode, and the class loader (instance of <bootloader>) for interface org/w3c/dom/Node have different Class objects for the type 3c/dom/NamedNodeMap; used in the signature
at com.gargoylesoftware.htmlunit.html.HTMLParser.parseHtml(HTMLParser.java:187)
at com.gargoylesoftware.htmlunit.DefaultPageCreator.createHtmlPage(DefaultPageCreator.java:268)
at com.gargoylesoftware.htmlunit.DefaultPageCreator.createPage(DefaultPageCreator.java:156)
at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseInto(WebClient.java:437)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:311)
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:454)
at org.openqa.selenium.htmlunit.HtmlUnitDriver.<init>(HtmlUnitDriver.java:180)
at org.openqa.selenium.htmlunit.HtmlUnitDriver.<init>(HtmlUnitDriver.java:190)
at geo.parser.GeocacheParser.getNextPage(GeocacheParser.java:102)
at geo.DetailsTopComponent.btnLoadPlus20ActionPerformed(DetailsTopComponent.java:250)
at geo.DetailsTopComponent.access$200(DetailsTopComponent.java:61)
at geo.DetailsTopComponent$3.actionPerformed(DetailsTopComponent.java:125)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:708)
at java.awt.EventQueue$4.run(EventQueue.java:706)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:159)

[抓住]

    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
WARNING [org.netbeans.TopSecurityManager]: use of system property netbeans.home has been obsoleted in favor of InstalledFileLocator/Places at org.netbeans.Clusters.relativeDirsWithHome(Clusters.java:137)

任何人都可以帮忙吗?

推荐答案

对于其他发生此错误的人,因为我认为到目前为止还没有足够的解释:

For other people who get this error since I don't believe it was sufficiently explained so far:

如前所述,rt.jar包含此类,它是Java运行时本身. 因此,如果您将xml-apis jar作为依赖项,或者任何其他依赖项都将其作为依赖项,则会收到该错误.

As mentioned earlier rt.jar contains this class it is Java runtime itself. Therefore, if you have xml-apis jar as a dependency or any other dependencies have it as dependency you will get that error.

Gradle的修复程序(但可以轻松地插值到任何其他Java构建工具上),以htmlunit为例,但可以是任何其他依赖项:

The fix for Gradle (but can be easily interpolated onto any other java build tool), htmlunit is used as an example but it can be any other dependency:

compile('net.sourceforge.htmlunit:htmlunit:2.27' ){
    exclude group: 'xml-apis', module: 'xml-apis'
}

要找到依赖项,请运行

gradle dependencies

问题是,因为gradle无法将xml-apis与rt.jar进行比较,所以它不会进行版本检查,通常情况下,您可以在此处查看:

The problem is since gradle does cannot compare xml-apis with rt.jar it won't do version check, normally how you can see here:

   \--- xerces:xercesImpl:2.9.1 -> 2.11.0

->表示xerces被替换为最新版本,以避免发生冲突,因为另一个依赖项已经在使用最新版本.

The -> says xerces was replaced with a more recent version to avoid conflicts since another dependency was already using more recent version.

这篇关于在Netbeans平台项目中使用WebDriver进行链接错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆