Avoiding "resource is out of sync with the filesystem" - eclipse

I develop Java code with Eclipse and regularly get this message:
resource is out of sync with the filesystem.
Right-click > Refresh will always clear this.
But why can't Eclipse refresh automatically when it finds this condition? Are there cases where you want the resource to be out of sync?.
If there are such conditions and they don't apply to my work, is there a way of getting Eclipse to refresh automatically when it encounters this state?. (I appreciate that it should refresh as little as it needs to in normal development to increase performance for human developers.)
UPDATE (2012-06-25):
My latest update (Version: Indigo Release Build id: 20110615-0604)
no longer shows
Preferences - General - Workspace - Refresh Automatically
There is an option "Refresh on access" - should I use this?

You can enable this in Window - Preferences - General - Workspace - Refresh Automatically (called Refresh using native hooks or polling in newer builds)
The only reason I can think why this isn't enabled by default is performance related.
For example, refreshing source folders automatically might trigger a build of the workspace. Perhaps some people want more control over this.
There is also an article on the Eclipse site regarding auto refresh.
Basically, there is no external trigger that notifies Eclipse of files changed outside the workspace. Rather a background thread is used by Eclipse to monitor file changes that can possibly lead to performance issues with large workspaces.

Just right click on the file or on the project and click Refresh. The error will vanish. I also faced the same issue and it worked for me.

Window -> Preferences -> General -> Workspace

For the new Indigo version, the Preferences change to "Refresh on access", and with a detail explanation : Automatically refresh external workspace changes on access via the workspace.
As “resource is out of sync with the filesystem” this problem happens when I use external workspace, so after I select this option, problem solved.

This happens to me all the time.
Go to the error log, find the exception, and open a few levels until you can see something more like a root cause. Does it says "Resource is out of sync with the file system" ?
When renaming packages, of course, Eclipse has to move files around in the file system. Apparently what happens is that it later discovers that something it thinks it needs to clean up has been renamed, can't find it, throws an exception.
There are a couple of things you might try. First, go to Window: Preferences, Workspace, and enable "Refresh Automatically". In theory this should fix the problem, but for me, it didn't.
Second, if you are doing a large refactoring with subpackages, do the subpackages one at a time, from the bottom up, and explicitly refresh with the file system after each subpackage is renamed.
Third, just ignore the error: when the error dialog comes up, click Abort to preserve the partial change, instead of rolling it back. Try it again, and again, and you may find you can get through the entire operation using multiple retries.

If this occurs trying to delete a folder (on *nix) and Refresh does not help, open a terminal and look for a symlink below the folder you are trying to delete and remove this manually. This solved my issues.

When you open an Eclipse workspace from within a clearcase view and try to rename the project, you will often get the pop-up warning ... “Resource ‘project’ is out of sync with the file system”. If refreshing the project does not fix the problem, then do the following workaround: a. Open workspace WITHOUT being in a view b. Select the project in Project Explorer c. ClearCase -> Associate Project (project should now look like project [] ) d. Right click project -> Refresh (vob sub-folders should now be empty) e. Right click project -> Rename ... f. Enter New name
Now you can close the workspace, reopen it in a view and refresh the project. You may also dissociate the project if you prefer the project not to be associated with the vob.

A little hint. The message often appears during rename operation. The quick workaround for me is pressing Ctrl-Y (redo shortcut) after message confirmation. It works only if the renaming affects a single file.

If you are a regular Eclipse user than you might have got this error many times. The error simply says, “you’ve made changes in files in your workspace from outside eclipse”. The simplest solution would be to select the project and press F5 (Right click -> Refresh).
if you need more explanation you can read from this web site

I was not able to resolve this error by either refresh or by turning on "native polling" workspace feature. Turned out my project was also opened in two instances of eclipse. Once I closed the other instance, the error went away. So make sure your project is only opened at one place if you are seeing this error.

Related

Eclipse cant get key input on Ubuntu

I'm using Ubuntu 12.10 and Eclipse Juno. This happens frequently: When I put focus in eclipse editor window, I can input few words in editor at the beginning, and then undo several times, Suddenly it happened that, I can't input any word in eclipse, that's strange problem.
Then, I change to other program and input anything, After that, back to eclipse it can accept my key again. It get me so frustrate.
Any one knows this problem? I am using desktop pc, memory is 1G.
This may help;
I guess you have lots of projects in your workspace and Project->Build Automatically option was enabled by default. Disable this and use Project-Build All or Project-Build Project commands before you start debugging your application OR If possible create two workspace and move some of your projects to other workspace. Note that you can open two instances of Eclipse on two different workspaces simultaneously.
Increase heap space for Eclipse.
Its also possible that you installed many plug-ins in Eclipse. You can disable unnecessary plug-ins to load on eclipse start up as shown below
Edit
Two more options.
1. Disable all options in **Highlighted** category of preferences. Restart eclipse.
2. Delete **.metadata** in your workspace and restart eclipse. Note!!!. All you preferences will be lost!!!
I found this problem; It is scim input method conflict with XIM(X Input Method) method.
Solution 1,
just right click in eclipse workspace -> select Input Methods -> SCIM input methods, that's OK. But, Every time you should do it while opening another file.
Solution 2, make scim as default system input methods.
Edit /etc/X11/xinit/xinput.d/scim as below:
XIM=SCIM
XIM_PROGRAM=/usr/bin/scim
XIM_ARGS="-d"
XIM_PROGRAM_SETS_ITSELF_AS_DAEMON=yes
#GTK_IM_MODULE=xim
#QT_IM_MODULE=xim
GTK_IM_MODULE=scim
QT_IM_MODULE=scim
also, add x95input file to /etc/X11/Xsession.d/95xinput
/usr/bin/scim -d
XMODIFIERS="#im=SCIM"
export XMODIFIERS
export GTK_IM_MODULE=scim
Hope this can help others.
I found it.
I googled and found the answer
The answer is:
Right click in Editor area InputMethods-Scim
*Editor area is where you write code

Eclipse auto refresh (after custom builder) does not discover new files

This is not another of many "how do I have Eclipse auto refresh" questions. My problem is that it does but not entirely.
In a workspace with multiple projects the compilation of one causes source code to be generated in other(s) (that exist purely for this purpose - no manually written source code there). Source code is generated during the main compilation itself (i.e. not a custom builder, but a plugin for the Scala compiler, but that should be irrelevant).
What I've done so far is:
Add a dummy custom (ant) builder AFTER the standard one and set it to "refresh selected resources" - the source folder of those generated projects.
Also add a dummy custom (ant) builder BEFORE the standard (Java) builder of generated projects that refresh the same thing. Actually I tried various versions - just the source folder, the entire project, or the entire workspace with the same outcome. Note that those generated projects are set to depend on the project whose compilation generates their source code.
In Window -> Preferences -> General -> Workspace enabled "Refresh using native hooks or polling" in addition to "Refresh on access". I also tried disabling "Refresh on access" (leaving only the other one). Same outcome.
Tried with Eclipse Indigo (3.7 SR2 20120216-1857) and Juno (4.2.2 M20130204-1200), both 64-bit Windows versions. Additional plugins are installed, most notably Scala IDE (multiple different versions both for Scala 2.9 and 2.10 ending with Scala IDE 3.0.0). Same outcome.
... and that outcome is that Eclipse does indeed notice the files that have been modified. In whatever was the best combination of settings of the above (forgot) I was even able to get it to notice that some files that used to be generated no longer are and have them disappear (although I still had to collapse the tree and re-expand it, but no F5 was needed).
However, I never got to have it automatically discover that a brand new file that did not exist before was created. In my case that also yields compilation errors (since the modified files that it does discover have changed refer to the code in new files it does not notice).
Simple F5 solves the problem, but it is killing me, as I am trying to roll this environment to other developers and I'd hate having to tell them "You know, you have to (keep) push(ing) F5 every time you...".
Is it possible that this is still impossible in Eclipse? Does anyone know of a plugin (if not a direct solution) that can help?
As I noted in comments, discovering new folders (Java packages) also does not seem to be a problem. Just new files in existing folders.
Thanks!
UPDATE
With all the refresh things I did in place I noticed something I did not before.
I make the change in the project that causes code generation (was trying to test if it is the re-appearance of previously disappearing file is an issue or otherwise). This time I was just renaming one method which caused a name of the generated source file (Java class) to be changed as well.
As "Build automatically" is enabled, Eclipse begins the build. Very quickly it discovers an error and complains about it - one generated class that was modified now refers to a class Eclipse does not see yet (because refresh is incomplete - saw the modified file, but still believed that the file that no longer exists is there and did not see the new file).
Build actually continues. Progress goes up and down, appears and disappears a number of times, building other dependent projects. All the time the error is listed and marked in the Package Explorer on the modified class.
After the build seemingly completes (with that error in it, some minutes later), the refresh completes (!!!). Package Explorer is updated, the old file disappears, the new file appears, the error disappears, etc. I initially attributed this to me switching windows and triggering the refresh that way but I made sure I touched nothing the last time - just made the change and pushed Ctrl+S to save it.
This may mean that the 'condition' is not so bad (one just has to be very patient and have nerves of steel). Investigating further. Thanks to all who are or may be doing the same! The question is still why are there two refreshes with the first one being incomplete?

Eclipse: Refreshing known types in Java project

If you press Shift+Ctrl+T or choose "Navigate > Open Type..." you get the "Open Type" dialog for quickly navigating to a known class. When you start typing a name only the classes for which the name matches stay visible. That way you can find a class of which you know the name very quick without having to browse through the package explorer tree.
This has been working great for me up until this morning. All of a sudden for a couple of my projects I am only seeing some of the types that exist. Of course I tried the obvious steps of refreshing the projects, cleaning the projects, re-building the projects, rebuilding the projects externally, but all to no avail. It is a bit odd since the types are known in other places. If I add an import statement Eclipse does not complain that it doesn't know the type and I can Ctrl-Click through the types to get to their file. However, the type navigation knows nothing about them.
In the past when InteliJ used to do this to me I would go find its cache files and delete them forcing it to rebuild. Does Eclipse have something similar I might do (I'm an Eclipse newbie)? I am using Eclipse 3.4.2 and I have it configured to not delete files on a clean (because our actual build process puts files into the output directories that I don't want Eclipse mucking with).
Have you tried closing and reopening the project? Only types from open projects are held in memory, and the refresh occurs when you Shift+Ctrl+T for the first time on a newly opened project.
Edit to add: Ctrl+Shift+R also displays the types (along with everything else) but it also supports the Camel-case thing to find the Java types quickly.
Close eclipse and delete any .index files and the savedIndexNames.txt file in workspace/.metadata/.plugins/org.eclipse.jdt.core once eclipse is restarted it will rebuildl the entire index for Ctrl+T
try starting eclipse with the -clean flag, you can add this to your eclipse.ini which can be found in the same directory as you eclispe.exe, or if you start eclipse using a bat or shell script, add it as a startup argument, e.g. eclipse -clean.
The clean will tidy your workspace, and should force eclipse JDT to recalulate types. Ive had issue with .snap files (with seem to be created on dirty shutdowns) that seem to corrupt my workspace until I clean them up, not long ago eclipse lost the Object class!! made for some interesting errors!
I get problems like this often. I tried your solution, noticed it seemed to rebuild its search index, but I still couldn't find any of my classes. Then I took a look at the little green arrow on top right corner of that dialog, and noticed I had a working set selected which belonged to another project. I find it a little dumb that Eclipse doesn't warn you about this or anything, since this can be a very annoying little detail that one tends to forget (me at least ;-)).
Anyways, clicked on "Deselect Working Set" and bam I can find my classes again. Thought I'd add this here since others may make the same mistake.
This worked for me -
Select your project in Package Explorer
Press F5 or Right click and select Refresh
I used the "-clean" as first line in the eclipse.ini (version Juno) and worked like a charm.
I'v tried all the answers and I still had the issue. I then tried this:
I deleted the project (it's a maven project) and re-imported it. This time I made sure i check the "Add Project(s) to working set" checkbox. After that Eclipse was able to find the classes in that project.
The problem must have started because I didn't check this checkbox when i first imported this project.
By the way, I'm using Neon
(Warning: Shameless marketing ahead)
If you like this feature, you would love nWire. nWire allows, among other things, to quickly search not only for types, but for any possible Java element like method or field. It also uses a navigator view which is non-modal. After searching you can see the class associations in a very quick and easy way. Check out the video on our site.

How do I delete an Eclipse perspective for a plugin I uninstalled?

I was evaluating the Enterprise IDE plugin for Eclipse, and ultimately decided not to purchase it. After I uninstalled the plugin, I was left with a bunch of perspective buttons (the ones in the far upper-right-hand corner) which I can't remove. How do I get rid of the manually, without nuking my workspace?
Edit: To be clear, right-clicking and going to "close" does nothing. Not even an error message.
Click Window ► Preferences ► General ► Perspectives. Select the perspective you want to delete and remove it. Some of them are unremovable. I don't know why.
How did you uninstall that plugin ?
As Daniel details in his answer, Help-> Install new software -> click on "Whats already installed?" is the right way to uninstall a plugin, and should get rid of the perspective as well.
If the plugin was installed in the dropins directory or in <eclipse>/plugins and <eclipse>/features, did you delete all directories/jar in <eclipse>/features, because if that plugin was packaged as a product, it did define in the product extension point a plugin_customization.ini which can indicate some perspective buttons.
If not, the only solution is to have a careful look at your workspace metadata, look for all recent file related to that plugin and remove them.
Make a copy of your workspace first though.
As an example of such a careful look at your workspace metadata", user900975 points out in his answer the <your workspace folder>/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml file, with <perspectives> element and <perspective> child elements that you can remove.
Note: Eightball mentions in his answer (upvoted) the possibility to list and delete a perspective.
Since he mentions "Some of them are un-removable. I don,t know why", my original answer above still stands.
Alexandros adds in the comments:
This helped me fix this, but in my case the file I had to edit while Eclipse was closed was:
.metadata\.plugins\org.eclipse.e4.workbench\workbench.xmi
I was suffering the same problem with a left-over perspective button for SVN repository Exploring. It wouldn't disappear using the close option. However it did disappear after selecting from Window -> Close All Perspectives.
Regards,
<your workspace folder>/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml contains a <perspectives> element with <perspective> child elements. You can delete <perspective> elements and they will no longer appear in the toolbar. Eclipse writes to this file when it exits so your changes will be overwritten if you don't quit Eclipse first.
If you installed a plugin, click Help ► Install new software, then click What's already installed? in the bottom right. Uninstall what you want, the perspective will be removed as well.
You could also try launching Eclipse with the -clean command line argument. This cleans out the Eclipse runtime cache, so it might fix your problem as well.
I had the same problem after installing a plugin. The answer is quite simple, if not obvious.
Open Window | Preferences
Click General node
Click Perspectives
Find the perspective in the list and then select Delete command on the right.
The list will refresh and your perspective is deleted.

How do I stop Eclipse from refreshing some dir?

Every time I start Eclipse it tries to refresh an entire project, which translates to more than 10 minutes of wait time, not to mention the ridiculous amount of memory it would consume.
I know there's a global setting to turn off automatic refreshing (General -> Workspace -> Refresh automatically). Is there a way to turn that off on individual directories? The rationale is that some directories are seldom changed in some of my projects.
According to this thread, no:
no settings per projects (for disabling auto-refresh)
no settings per directory within one project.
For more recent versions of Eclipse, as detailed in Eclipse help page, you can use Resource filters (also initially mentioned below by pcoucke)
Resource filters can be created, edited and removed in the File > Properties > Resource > Resources Filters property page for a project or folder resource.
Resource filters only apply to files and/or folders that are implicitly included in the workspace by the refresh operation
An "Exclude" resource filter prevent all files and/or folders that match the filter condition to be included in the workspace during the refresh operation.
I mentioned an example in "How to have .git folders ignored by Eclipse projects"
For individual directories you can do it by adding Resource filters.
Right-click a project folder in Project Explorer tree and go to "Properties".
Resource -> Resource Filters.
Add as much exclusion filters for files/folders as you like.
See this answer: https://stackoverflow.com/a/6321688/1194584
If your problem is the refresh on startup, try: Preferences -> General -> Startup and Shutdown -> Refresh workspace on startup.
I found an effective hack that can in effect make Eclipse ignore a directory. See Eclipse - Ignore Entire Directories
To exclude entire projects, you could close them. Don't know a way for individual directories.
I'm sorry but I don't know anything about such a setting. As one already mentioned you could close the project within Eclipse (once it is open). This prevents the repetitive refreshing on that project. Otherwise I can just give you the suggestion to have 1 workspace per project and not include multiple different projects into the same workspace (unless they are related to each other). This is a much better practice and what I'm doing every day when working with Eclipse. And I didn't experience any problems so far of the type you mentioned.
I ran in to this same problem. When an eclipse project refreshes it seems to want to touch every file regardless of settings. The code base I'm working on has ~70K files, and took nearly 2 minutes to refresh. I eventually redefined the eclipse project to be a much smaller subset of that (~10K files) that has a ~ 1 second refresh. Not ideal, but the long refresh times are intolerable.
FYI the "Derived" check box and "Exclude from build..." options DON'T prevent a folder from being refreshed.
Note, the computer I'm using is 4-5 years old (Pentium IV processor, 7200 rpm hard drive). I bet one of these newer fast solid state hard drives would dramatically improve refresh times!
I found out a way to stop auto refreshing at eclipse startup.Below are the steps:-
Windows->Preferences->(Search Keyword:-Workspace)->General->Startup And ShutDown->Uncheck Referesh workspace on start up.
Done ...!!!
Work like charm for me.
Edit the file .project inside the folder .metadata.plugins\org.eclipse.jdt.core.org.eclipse.jdt.core.external.folders of your workspace folder.
Then remove any content between the linkedResources tags.
That worked for me (eclipse-jee-helios-SR2-win32)
You know what. Just close unused projects and that's was all for me.!