The type java.util.Map$Entry cannot be resolved. It is indirectly referenced from required .class files

ashwin1907 picture ashwin1907 · Jun 8, 2014 · Viewed 99.5k times · Source

I am writing a simple Java program on Eclipse.

import java.util.HashMap;

public class Demo {
    public static void main(String[] args) {
        HashMap<String, String> hash = new HashMap();
    }
}

The above program generates the following errors.

  1. The project was not built since its build path is incomplete. Cannot find the class file for java.util.Map$Entry. Fix the build path then try building this project.
  2. The type java.util.Map$Entry cannot be resolved. It is indirectly referenced from required .class files.

I searched over the internet almost everywhere, but I was not able to correct this.

I have installed Java SE 8u5 (JDK) (http://www.oracle.com/technetwork/java/javase/downloads/index.html?ssSourceSiteId=otnjp)

  1. Windows -> Preferences -> Installed JREs shows

a) jdk C:\Program Files\Java\jdk

  1. Project -> Build Path -> Libraries shows

a) JRE system library (jdk)

b) JRE system library (jre8)

Please somebody help me.

EDIT: Changing Eclipse version from Helios to Juno solved the problem!

Answer

Wyzard picture Wyzard · Sep 20, 2014

I've seen occasional problems with Eclipse forgetting that built-in classes (including Object and String) exist. The way I've resolved them is to:

  • On the Project menu, turn off "Build Automatically"
  • Quit and restart Eclipse
  • On the Project menu, choose "Clean…" and clean all projects
  • Turn "Build Automatically" back on and let it rebuild everything.

This seems to make Eclipse forget whatever incorrect cached information it had about the available classes.