更新到 htmlunit 2.37.0:setTimeout() 构建失败

问题描述

嘿嘿

首先:抱歉,我可能问了一个非常简单的问题,我对 Java 很陌生。

这是我的问题:我将旧代码的依赖从使用 net.sourceforge.htmlunit 2.8 版更新为 2.37.0(这是 Github 安全机器人推荐的)。

现在我的代码无法编译并抛出两个错误

相关代码如下:

import com.gargoylesoftware.htmlunit.browserVersion;
import com.gargoylesoftware.htmlunit.WebClient;

...

WebClient webClient = new WebClient(FIREFOX_3);
webClient.setTimeout(50000);
HtmlPage page = webClient.getPage("http://king.smith.man.ac.uk/mcpred/");
  1. 一个错误
[ERROR] ./MissedCleavageAnalysisAdaptor.java:[64,53] cannot find symbol
[ERROR]   symbol:   variable FIREFOX_3
  1. 第二个错误
[ERROR] ./MissedCleavageAnalysisAdaptor.java:[65,26] cannot find symbol
[ERROR]   symbol:   method setTimeout(int)

通过简单地删除“FIREFOX_3”,我设法避免了第一个错误。改用“FIREFOX”(= 最新版本的 Firefox)或“FIREFOX_78”不起作用并抛出相同的错误

第二个错误,我看不到问题。我尝试了其他整数或首先定义一个整数 int timeout = 50000;webClient.setTimeout(timeout);。总是发生同样的错误。似乎没有导入方法 setTimeout。但是,这应该与 WebClient 一起导入,不是吗?

你能告诉我如何解决这些错误吗?

非常感谢!

解决方法

哇,2010 年 8 月 5 日发布了 2.8,2020 年 1 月 28 日发布了 2.37,这是一个巨大的飞跃。 当前版本是 2.46.0 rom 2021 年 1 月 2 日 - 也许直接迁移到这个是有意义的。

如果您查看发行说明,您会发现这一行:

WebClient:不推荐使用 setTimeout() 和 getTimeout()。改用 webClient.getOptions()。

对于 2.11 版。意味着 - 你必须像这样改变你的代码:

webClient.getOptions().setTimeout(50000);

完整的发行说明可以在这里找到https://htmlunit.sourceforge.io/changes-report.html

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...