问题描述
嘿嘿
首先:抱歉,我可能问了一个非常简单的问题,我对 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/");
[ERROR] ./MissedCleavageAnalysisAdaptor.java:[64,53] cannot find symbol
[ERROR] symbol: variable FIREFOX_3
- 第二个错误:
[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