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

Updating to htmlunit 2.37.0: setTimeout() build failure

他.

首先:很抱歉问了一个非常简单的问题,我是 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 一起导入,不是吗?

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

非常感谢!

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

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

WebClient: deprecated setTimeout() and getTimeout(). Use webClient.getOptions() instead.

2.11 版。意思是 - 你必须像这样改变你的代码:

webClient.getOptions().setTimeout(50000);

完整的发行说明可在此处获得https://htmlunit.sourceforge.io/changes-report.html