Java NoClassDefFoundError Htmlunit

Java NoClassDefFoundError Htmlunit,java,htmlunit,Java,Htmlunit,我是新手。我尝试了一个使用htmlunit加载网页的简单代码,并使用xpath获取特定的div标记。 xpath是正确的。我已经使用控制台进行了验证 到目前为止我尝试的代码是 import java.util.List; import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.html.HtmlElement; import com.gargoylesoftware.htmluni

我是新手。我尝试了一个使用htmlunit加载网页的简单代码,并使用xpath获取特定的div标记。 xpath是正确的。我已经使用控制台进行了验证

到目前为止我尝试的代码是

import java.util.List;

import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlElement;
import com.gargoylesoftware.htmlunit.html.HtmlPage;

public class Test {

public static void main(String s[]) throws Exception 
{
    WebClient client = new WebClient();
    HtmlPage page = client.getPage("http://jpu1.pv.sv.nextag.com/serv/iinedan/buyer/outPdir.jsp?search=camera");

    List<?> items = page.getByXPath("//div[contains(@class,'search-result-cards')]//div[contains(@class,'listContainer')]");

    for(HtmlElement item : (List<HtmlElement>)items)
    {
        List<?> imageContainer;

        imageContainer = item.getByXPath("//div[contains(@class,'imageContainer')]/a");

        System.out.println("Image container data length : "+imageContainer.size());

        System.out.println("Image "+imageContainer.toString());

    }

  }

}

这似乎是一个配置问题。我从网站下载了jar,并将其添加到我的引用库中。我使用的IDE是eclipse。HtmlUnit版本是HtmlUnit所依赖的xml-API-1.4.01.jar库中的org/w3c/dom/ElementTraversal。因此,作为一种解决方案,您需要将这个jar放在项目的类路径中

然而,这取决于库的数量。在解决了当前错误之后,可能会出现另一个类的noClassDefFoundError

为了方便地解决这个问题,开始使用Maven

  • 创建一个maven项目
  • 在pom.xml中为htmlunit依赖项添加一个条目,如下所示:

    <dependencies>
    <dependency>
        <groupId>net.sourceforge.htmlunit</groupId>
        <artifactId>htmlunit</artifactId>
        <version>2.13</version>
    </dependency>
    </dependencies>
    
    
    net.sourceforge.htmlunit
    htmlunit
    2.13
    
  • 现在创建一个新类并在其中添加代码


  • Maven将确保任何库的所有可传递依赖项都可用,并自动将它们保留在项目类路径中(如果在IDE中)

    许多jar包包括
    org.w3c.dom.ElementTraversal

    例如
    xmlapi
    batikext
    jython

    我认为jar包冲突可能会导致您的问题。

    您能提供更多jar包版本的详细信息吗?

    请更新到
    2.26
    thank you@shinchan,这是因为我直接创建了一个普通的java项目并手动添加了jar。这是一个依赖性的问题。对我来说,Maven没有遮掩它。。。如何修复?你的意思是,依赖项不在最终构建的工件文件夹中吗?
    <dependencies>
    <dependency>
        <groupId>net.sourceforge.htmlunit</groupId>
        <artifactId>htmlunit</artifactId>
        <version>2.13</version>
    </dependency>
    </dependencies>