Refresh

Once you start Eclipse, the workspace is usually read from the disk (not necessarily, caches are also kept from the previous invocation). From this point on, usually, what ever changes you do outside of Eclipse on resources in the workspace are not reflected immediately. You need to request for a refresh (right click on a project and chose Refresh from the drop down menu).

“Usually” above because it can be customized. To customize the way refresh behaves and eventually switch it to fully detect each change whenever it occurs, use menu Window ‣ Preferences ‣ General ‣ Workspace. From here you can customize if refresh is done on startup, how often etc.

Refresh is a basic and primitive support of concurrency and also has to do with performance. Maybe I don’t want to be notified of every change on resources in my projects if somebody is also processing part of the data outside Eclipse. It may take a while, even not be relevant and stop me from working until the external processing is complete. For example compilation. Hence maybe I want to trigger it when I know for sure I am interested in some external changes. This does not imply that conflicts (for example editing a file that changed on the disk) are not promptly signaled by Eclipse.

It happens often that you don’t find some files in your workspace (of course inside a project) although from explorer or console it seems they are there. Maybe you forgot to refresh?