0

Netbeans プラットフォーム プロジェクトで webdrive を使用しようとしていますが、次のエラーが発生し続けます。

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)

誰でも助けることができますか?

4

2 に答える 2

0

クラスパスに異なるバージョンの org/w3c/dom/NamedNodeMap があります。

1 つのプロジェクトに対して同じ xml-apis-X.YZ.jar が 2 回 (異なるバージョンで) ある可能性があるため、プロジェクトのビルド設定を確認する必要があります。(しかし、プロジェクトの依存関係を確認しました... selenium-server-standalone-2.41.0.jar にもこのクラスが含まれています。)

解決策は、このクラス ファイルの間違ったバージョンをクラスパスから削除することです。回避策の 1 つは、未使用の jar ファイルを手動で削除することです。(または jars スコープをprovidedに設定します)

アップデート:

次のメソッドでプロジェクトのクラスパスを表示します。

void displayClassPath() {  

    ClassLoader classloader = Thread.currentThread().getContextClassLoader();  

    do {  
        URL[] urls = ((URLClassLoader)classloader).getURLs();  

        for(URL url: urls){  
            System.out.println(url.getFile());  
        }  
        classloader = (URLClassLoader)classloader.getParent();  

    } while(classloader != null);  
}  

NamedNodeMap クラス ファイルのすべてのインスタンスは、ファイル システム (一覧表示された jar ファイル内) にあります。無効/非推奨/古いバージョンを除外してみてください。

...または... 別の方法は、JVM オプション -verbose を使用することです。ロードされたすべての JAR ファイルとクラス (およびインターフェース) が表示されます。

[Loaded org.openqa.selenium.io.FileHandler$NoFilter from file:/C:/Program%20Files/Java/jre7/lib/ext/selenium-java-2.41.0.jar]
[Loaded java.nio.channels.ReadableByteChannel from C:\Program Files\Java\jre7\lib\rt.jar]
[Loaded java.nio.channels.ByteChannel from C:\Program Files\Java\jre7\lib\rt.jar]

例: Eclipse に Selenium プロジェクトがあり、displayClassPath() メソッドを使用しました。NamedNodeMap の 3 つのインスタンスが、これらの jar ファイル内で同じ署名を持つクラスパスに作成されました。

  • セレン-サーバー-スタンドアロン-2.41.0.jar
  • xml-apis-1.4.01.jar
  • jre7\lib\rt.jar

(署名を確認するには、.class ファイルを逆コンパイルします: http://jd.benow.ca/ )

それに関するいくつかのリンク:

于 2014-05-08T17:01:41.497 に答える