在 JavaFX2 中使用WebEngine
时,我注意到它有时会卡住。假设我正在制作一个爬虫,它只是在页面上找到超链接,然后递归地访问它们以执行相同的操作,跟踪我们访问过哪些链接以及哪些链接已经在边界上。在运行我的代码时,执行有时会在任意时刻挂起。
我以监听器的形式向我的项目添加了一些调试代码,workDoneProperty
并exceptionProperty
打印了loadWorker
's 的每个转换stateProperty
。然后我注意到有时引擎会停止 URL 的中间加载(状态被卡住RUNNING
并且没有更多workDone
更新)。我假设这是因为超时或其他原因,但我已经停止等待 5 分钟后是否确实超时。
exceptionProperty
似乎没有产生任何事件,也没有过渡webEngine
到FAILED
or CANCELLED
,它只是停止。我想知道这是否可能是图书馆中的竞争条件,或者我可能缺少一些东西......有没有人遇到过这个知道如何解决这个问题的人?对于我的应用程序来说,引擎不只是随机停止是非常重要的......
编辑:从我的控制台添加输出:
Work done: -1
Engine Load Worker transitioning into state: READY
Work done: 0
Engine Load Worker transitioning into state: SCHEDULED
Engine Load Worker transitioning into state: RUNNING
Work done: 21
Work done: 24
Work done: 24
Work done: 57
Work done: 72
BUILD STOPPED (total time: 9 minutes 32 seconds)