### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.core Index: model/org/eclipse/jdt/internal/core/DeltaProcessor.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/DeltaProcessor.java,v retrieving revision 1.344 diff -u -r1.344 DeltaProcessor.java --- model/org/eclipse/jdt/internal/core/DeltaProcessor.java 27 Apr 2011 15:44:15 -0000 1.344 +++ model/org/eclipse/jdt/internal/core/DeltaProcessor.java 10 Aug 2011 06:45:02 -0000 @@ -953,6 +953,7 @@ // project does not exist -> ignore continue; } + boolean hasChainedJar = false; for (int j = 0; j < entries.length; j++){ if (entries[j].getEntryKind() == IClasspathEntry.CPE_LIBRARY) { IPath entryPath = entries[j].getPath(); @@ -1022,7 +1023,7 @@ System.out.println("- External JAR ADDED, affecting root: "+root.getElementName()); //$NON-NLS-1$ } elementAdded(root, null, null); - javaProject.resetResolvedClasspath(); // in case it contains a chained jar + hasChainedJar |= !this.manager.isNonChainingJar(entryPath); this.state.addClasspathValidation(javaProject); // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=185733 hasDelta = true; } else if (status == EXTERNAL_JAR_CHANGED) { @@ -1031,7 +1032,7 @@ System.out.println("- External JAR CHANGED, affecting root: "+root.getElementName()); //$NON-NLS-1$ } contentChanged(root); - javaProject.resetResolvedClasspath(); // in case it contains a chained jar + hasChainedJar |= !this.manager.isNonChainingJar(entryPath); hasDelta = true; } else if (status == EXTERNAL_JAR_REMOVED) { PackageFragmentRoot root = (PackageFragmentRoot) javaProject.getPackageFragmentRoot(entryPath.toString()); @@ -1039,13 +1040,17 @@ System.out.println("- External JAR REMOVED, affecting root: "+root.getElementName()); //$NON-NLS-1$ } elementRemoved(root, null, null); - javaProject.resetResolvedClasspath(); // in case it contains a chained jar + hasChainedJar |= !this.manager.isNonChainingJar(entryPath); this.state.addClasspathValidation(javaProject); // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=185733 hasDelta = true; } } } } + + if (hasChainedJar) { + javaProject.resetResolvedClasspath(); + } } // ensure the external file cache is reset so that if a .jar file is deleted but no longer on the classpath, it won't appear as changed next time it is added JavaModel.flushExternalFileCache();