Eclipse上有这个复选框:
偏好设置 - >一般 - >工作区 - >使用本机挂钩或轮询刷新
如果启用此选项,则工作区资源将为 与文件系统中的相应资源同步 自动使用本机刷新提供程序(在Windows上)或轮询 机构。
从文档和复选框说明中可以看出,Eclipse使用某种操作系统挂钩来获取有关文件更改的通知。并且似乎使用轮询在Windows以外的操作系统上模拟此功能。
我的问题是:
答案 0 :(得分:10)
是的,这正是Eclipse正在做的事情。对于Mac或Linux,它目前使用轮询。
有一个扩展点org.eclipse.core.resources.refreshProviders
可用于为每个平台提供刷新代码,人们已经为Mac和Linux编写了测试插件,但它们不在产品中(参见https://bugs.eclipse.org/bugs/show_bug.cgi?id=108697和https://bugs.eclipse.org/bugs/show_bug.cgi?id=237344)
这是org.eclipse.core.internal.refresh.MonitorManager
的来源,PollingMonitor
进行轮询刷新。
org.eclipse.core.internal.resources.refresh.win32.Win32RefreshProvider
通过JNI使用本机方法刷新Windows(它只在Windows中插件)。
org.eclipse.core.internal.resources.refresh.win32.Win32Monitor
和Win32Natives
包含核心代码。
答案 1 :(得分:4)
I have found out选项“使用本机挂钩或轮询刷新”是以旧的方式执行此操作:
以前的Eclipse版本依赖于本机刷新提供程序(在Windows上)或轮询机制来保留 工作区与底层文件系统同步。这个 通过选择使用本机刷新仍可以启用功能 挂钩或轮询打开首选项页面首选项>一般> 工作区。
现在有了一种新的轻量级机制。档 发现工作空间不同步,例如同时 通过编辑器访问文件内容将自动进行 异步刷新。如果要以这种方式刷新文件,请转到 打开首选项页面首选项>一般>工作区并选择 访问时刷新。
从现在开始,我只会在访问时使用Refresh。
答案 2 :(得分:1)
"使用本机挂钩刷新或轮询" 可以解决使用外部编辑器编辑文件时未更新项目构建的问题。 problem details