Can Eclipse refresh resources automatically?

Eclipse (3.4.2 with PyDev) deals with out-of-sync resources (files that have been edited outside of the IDE) differently from other IDEs that I've used, where only resources with editors open are considered out-of-sync. In Eclipse, any resource can go out of sync.

This means that when I perform a search after any file has changed outside of Eclipse, I get an error dialog telling me that files are out of sync, even if they have no open editors. As far as I can tell, there is no global refresh command, so I'm forced to read the project names (I have several projects) in the error dialog, and do a right-click + refresh for each of them.

I've checked the Refresh Automatically setting in Settings > General > Workspace, but this has no effect. Is there any way to get Eclipse to always just load non-active resources from disk?

104368 次浏览

我认为如果您单击项目资源管理器中的项目节点并按 F5或右键单击并选择 Refresh,该项目的所有资源将被刷新。另外,如果您使用 CTRL + 单击多个项目,您应该能够同时刷新多个项目。

单击一个项目,使用 Ctrl + A 选择所有内容,使用 F5应该能够完全满足您的需要——刷新所有内容。

当我有机会的时候我会测试这个,但是我相信这是我克服过去类似问题的方法。


我注意到这个答案经常被投票否决。我想指出的是,这个问题指的是 Eclipse 的一个特定版本: 3.4.2。实际上没有自动刷新不同步资源 直到3.7版本的靛蓝月食的方法,正如前面提到的 詹姆斯 · 布莱克本的回答。本答案中描述的方法是3.4.2版本(以及3.7靛蓝版本之前的任何其他版本)中实现此目标的唯一方法。

有一个全局刷新-在包资源管理器中没有选择任何东西(或所有东西) ,然后按 F5(或右键单击空白并选择刷新)。当然,如果您有大型项目,这可能会花费相当长的时间。

也许你应该在 Eclipse 站点上添加一个特性请求:

Https://bugs.eclipse.org/bugs/

我认为添加一个自动刷新过期资源的首选项是一个很好的主意。

即使其他人提出的解决方案确实是正确的,您也有一个用于 Eclipse 的“ 刷新所有”插件。只需将 更新页面添加到 Eclipse 更新站点列表中,就可以将其安装到 IDE 中。

Eclipse Helios 在 Preferences > General > Workspace 具有内置刷新特性。就在你关闭自动构建的同一个地方。自动选择刷新。一个具有相同功能的插件是 Andrei Loskutov 的 Filesync 插件。更新站点地址是: http://andrei.gmxhome.de/eclipse/。在安装期间,选择 Eclipse 3.5-3.7 plugins > FileSync。

这个问题将在 Eclipse 3.7(靛蓝)中解决。虽然“ 自动刷新”最终使资源恢复同步,但刷新钩子只存在于 Windows 中,因此在 Linux 和 Mac OS 上,它必须定期轮询文件系统。

从3.7开始有了一个新的偏好 Settings > General > Workspace > Refresh On Access(又名轻量级刷新)。这个首选项导致 Eclipse 在发现资源“不同步”时自动刷新资源。当打开、读取或搜索文件时,它将防止发生不同步错误。

参见: https://bugs.eclipse.org/303517

是的,Access 的刷新早就应该实现了... ... 对于这个问题和类似问题的回答通常建议启用全局自动刷新,这对于大型远程项目来说可能需要一段时间。 事实上,有些人会说,访问刷新应该是原始的(< 3.x)默认行为..。

Eclipse 中确实缺少全局刷新。如果您选择的项目中包含已关闭的项目,则上述选择所有项目然后运行刷新(例如 F5)的过程不起作用。这意味着,如果您像我一样关闭了许多项目中的1/2,那么您会发现自己手动通过 Ctrl 单击数十个项目。这很痛苦。我希望 Eclipse 能够简单地忽略已关闭的项目。

我通过创建一个新的“外部工具”运行配置来解决这个问题,该配置执行一个空白批处理文件。在运行配置中,您可以让它在完成后刷新工作区。然后,我使用实用宏创建了一个宏: 1)执行最后一个外部工具运行配置(刷新工作区) ,然后2)执行最后一个调试运行配置(运行我的应用程序)。如果您取消选中“分配控制台”,那么已完成的外部工具条目将不会显示在调试窗口中。

全局刷新实际上存在于普通的 Eclipse 中,没有任何插件,也没有选择工作区中的每个项目。

基本上,您需要取消选择您的项目资源管理器中的所有内容并按 F5。为此,Ctrl + 单击项目资源管理器中选定的资源并按 F5。

假设 Java7有一个用于文件系统钩子的 api,人们可能会认为在 Eclipse 中可以更好地处理刷新。

编辑: 实际上,有一个插件使用这种机制: https://github.com/psxpaul/EclipseJava7Refresher

在 eclipseIDE 中,脱离同步问题很常见,因此您必须使用本机钩子或轮询来检查这个选项 windows-> 偏好-> Workspace-> refresh。

中的 自动刷新文件有一个选项

Window -> Preferences -> General -> Startup and Shutdown -> Refresh workspace on startup

单击它,以便在 eclipse 中有一个“全新”的开始。 :)

版本: Eclipse 4.12