Eclipse autocomplete not working in some Java files

I have noticed that autocomplete is not working in some of java files in Eclipse. Also, the files where autocomplete is not working, display a hollow "J" as the icon for the Java file. The files where autocomplete is working, icon for java file is a filled "J"

I am wondering if someone can point out what went wrong all of suddent, why the change in icons and why autocomplete and syntax highlighting is turned-off in the files with a hollow "J" icon?

Thanks.

update

Basically, I was doing what VonC has suggested but Eclipse was not refreshing that it why I was thinking that VonC's suggestion isn't working, after doing a refresh, the problem resolved.

Answers


In this following picture, MyClass.java has a hollow J, because it is explicitly excluded from the sources to build:

Could you go to the properties of the project, "Java Build Path" Section, "Source" tab and see if some exclusion filter has been set ? It is usual for instance to define:

**/Test*.java

to exclude at first building any unit-test class (when you have a large set of sources and do not want to be presented with Test classes during auto-completion, or do not want them considered during source searches).


Since this question is highly ranked on Google, I will add a solution to fix general auto complete issue, not for 'hollow J' ones.

Try Window (Windows/Linux) or Eclipse (OS X) -> Preferences -> Java -> Editor -> Content Assist -> Restore Defaults

also

Content Assist -> Advanced -> Restore Defaults


some answers (restore defaults) above do not work for some adt bundle installs as of jan '13.

in those cases, go to

Window -> Preferences -> Java -> Editor -> Content Assist -> Advanced

and tick on the JAVA PROPOSAL options.


Those with a hollow J aren't part of the build path of the project, so they can't participate in the normal build process and therefore auto-complete won't be enabled for these files (and other Java editor features!). You must add the folders with the Java files to be built to the build path using the 'source path' section of the project properties. This can be accessed by right clicking on a project in the project navigator / package explorer and going to Properties. See http://www.informit.com/articles/article.aspx?p=367962 for details.

Additionally, if the files aren't part of a Java project in the first place, you must create a project and move the files in, or put the files in an existing one. Again, make sure these file are under a source directory as described by that section of the project properties.


I cope with the issue by deleting the file if autocomplete does not work. Just before copying the source code. Then I have recreated the java file with the same name. Pasted the source code previously copied.


As an addendum to the @VonC answer, make sure that the Java files are part of the Inclusion pattern. I had a case where a build process was creating the project while only including .js files and not the Java files:

You can manually edit the inclusions via the Edit button. In my case, a fix was made to the build script to make it permanent.


Make sure you have the right directory structure. I believe that:

  • Hollow J icon beside Java file - will not be build
  • Normal J icon beside Java file - is a file to be build.

I made a mistake when I created webapp artefact. By default it does not create folder for Java, but for resources. I mistakenly put my sources there. Have a look - see the difference.


Neither Restoring Defaults or my build path (file was already in package directory w/other files where auto-complete was working) fixed problem. Fix for me was to close the file explicitly (right click on file name in tab) and re-open. Interestingly, just re-starting Eclipse didn't work either.


Need Your Help

CSS technique for a horizontal line with words in the middle

html css cross-browser

I'm trying to make a horizontal rule with some text in the middle.