【问题标题】:Why is htmlunit getPage is making this issues with nosuchmenthod为什么 htmlunit getPage 使用 nosuchmenthod 产生此问题
【发布时间】:2018-07-27 00:02:03
【问题描述】:

我在连接到网站时遇到此错误。 Website

java.lang.NoSuchMethodError: org.apache.commons.io.IOUtils.toString(Ljava/io/InputStream;Ljava/nio/charset/Charset;)Ljava/lang/String;
at com.gargoylesoftware.htmlunit.WebResponse.getContentAsString(WebResponse.java:242)

我正在使用 htmlunit 2.29 并在测试时

    WebClient client;
    HtmlPage homePage;
    Document doc = null;
    try {
        client = new WebClient(BrowserVersion.FIREFOX_52);
        client.getOptions().setUseInsecureSSL(true);
        client.setAjaxController(new NicelyResynchronizingAjaxController());
        client.getOptions().setThrowExceptionOnFailingStatusCode(false);
        client.getOptions().setThrowExceptionOnScriptError(false);
        client.waitForBackgroundJavaScript(20000);
        client.waitForBackgroundJavaScriptStartingBefore(20000);
        client.getOptions().setCssEnabled(false);
        client.getOptions().setJavaScriptEnabled(true);
        client.getCache().setMaxSize(0);

        homePage = client.getPage(url);

我已经在单独的新课程中对其进行了测试。它正常工作。 但是在其他项目中使用这个 (client.getPage(url);) 功能块时,
它给了
noSUchMethodError from IOUtils.toString class.

这里可能缺少什么?

【问题讨论】:

    标签: java html web-scraping webclient htmlunit


    【解决方案1】:

    通常这是因为依赖关系损坏。确保您的类路径中有正确版本的 apache.commons.io,并检查是否存在重复项。

    顺便说一句:

    client.waitForBackgroundJavaScript(20000);
    client.waitForBackgroundJavaScriptStartingBefore(20000);
    

    没有选项,在您的客户端设置期间进行这些调用是没有用的。在使用 c&p 之前,请阅读 stackoverflow 上的全部帖子。

    【讨论】:

    • 是的,我发现了这个问题。实际上,我之前使用了两个不同版本的 apache.commons.io。谢谢你的更新。
    猜你喜欢
    • 1970-01-01
    • 2016-09-23
    • 1970-01-01
    • 1970-01-01
    • 2016-12-25
    • 1970-01-01
    • 2011-05-27
    • 2022-01-03
    • 1970-01-01
    相关资源
    最近更新 更多