title: Why does Eclipse have to be constantly cleaned/refreshed?
body: <p>I am using Eclipse Indigo with MercurialEclipse plugin (1.9.1.v201111302231).
  The workspace contains ~25 java projects.</p>
  
  <p>The problem is that every time I pull new changes I have to:</p>
  
  <ol>
  <li>Uncheck "Project|Build Automatically"</li>
  <li>Clean all from "Project|Clean ..."</li>
  <li>Refresh all the projects from the project explorer.</li>
  <li>Check back "Project|Build Automatically"</li>
  </ol>
  
  <p>Sometimes weird errors pop up when I debug a project and then I have to repeat the same steps. The overall experience is terrible. My question - is this how Eclipse is supposed to work? Can it be the  MercurialEclipse plugin, which causes all this? How can I fix it?</p>
  
  <p>I realize that my question probably lacks some information, please tell me what is missing and I will add it.</p>
  
  <p>Thanks.</p>
  
  <p><strong>EDIT</strong></p>
  
  <ol>
  <li>The project sometimes has errors, but only because Eclipse did not automatically refreshed/built the dependency projects. When I manually refresh the dependencies - errors disappear.</li>
  <li>Steps 1 and 4 are done out of desperation, because just 2 and 3 sometimes are not enough.</li>
  <li>All the projects are normal Java projects.</li>
  </ol>
  
  <p>I am not sure what information to provide on the projects, except just attach their .classpath and .project files.  For instance, here they are from just one project:</p>
  
  <p>.classpath:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
  &lt;classpath&gt;
      &lt;classpathentry kind="src" path="src"/&gt;
      &lt;classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/&gt;
      &lt;classpathentry combineaccessrules="false" kind="src" path="/Common"/&gt;
      &lt;classpathentry kind="lib" path="../3rdParty/log4j/1.2.16/log4j-1.2.16.jar"/&gt;
      &lt;classpathentry combineaccessrules="false" kind="src" path="/WebApi"/&gt;
      &lt;classpathentry combineaccessrules="false" kind="src" path="/Core"/&gt;
      &lt;classpathentry kind="lib" path="../3rdParty/restlet-jse/2.0.10/lib/org.restlet.jar" sourcepath="C:/Program Files (x86)/Restlet Framework/Edition Java SE/2.0.10/src"/&gt;
      &lt;classpathentry kind="lib" path="../3rdParty/guice/3.0/aopalliance.jar"/&gt;
      &lt;classpathentry kind="lib" path="../3rdParty/guice/3.0/guice-3.0.jar"/&gt;
      &lt;classpathentry kind="lib" path="../3rdParty/restlet-jse/2.0.10/lib/javax.ws.rs_1.0/javax.ws.rs.jar"/&gt;
      &lt;classpathentry combineaccessrules="false" kind="src" path="/DTOs"/&gt;
      &lt;classpathentry combineaccessrules="false" kind="src" path="/NetworkEditor"/&gt;
      &lt;classpathentry kind="lib" path="../3rdParty/guice/3.0/guice-multibindings-3.0.jar"/&gt;
      &lt;classpathentry combineaccessrules="false" kind="src" path="/Bootstrapper"/&gt;
      &lt;classpathentry kind="lib" path="../3rdParty/guice/3.0/javax.inject.jar"/&gt;
      &lt;classpathentry combineaccessrules="false" kind="src" path="/ShunraLicense"/&gt;
      &lt;classpathentry kind="output" path="bin"/&gt;
  &lt;/classpath&gt;
  </code></pre>
  
  <p>.project:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
  &lt;projectDescription&gt;
      &lt;name&gt;VCat&lt;/name&gt;
      &lt;comment&gt;&lt;/comment&gt;
      &lt;projects&gt;
      &lt;/projects&gt;
      &lt;buildSpec&gt;
          &lt;buildCommand&gt;
              &lt;name&gt;org.eclipse.jdt.core.javabuilder&lt;/name&gt;
              &lt;arguments&gt;
              &lt;/arguments&gt;
          &lt;/buildCommand&gt;
      &lt;/buildSpec&gt;
      &lt;natures&gt;
          &lt;nature&gt;org.eclipse.jdt.core.javanature&lt;/nature&gt;
      &lt;/natures&gt;
  &lt;/projectDescription&gt;
  </code></pre>
  
  <p>I will gladly provide more info - just say what.</p>