### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.core Index: model/org/eclipse/jdt/internal/core/ClasspathEntry.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ClasspathEntry.java,v retrieving revision 1.111 diff -u -r1.111 ClasspathEntry.java --- model/org/eclipse/jdt/internal/core/ClasspathEntry.java 15 Dec 2008 12:30:18 -0000 1.111 +++ model/org/eclipse/jdt/internal/core/ClasspathEntry.java 15 Jan 2009 12:08:38 -0000 @@ -1513,7 +1513,8 @@ // retrieve resolved classpath IClasspathEntry[] classpath; try { - classpath = ((JavaProject)javaProject).resolveClasspath(rawClasspath); + // don't resolve chained libraries: see https://bugs.eclipse.org/bugs/show_bug.cgi?id=259685 + classpath = ((JavaProject)javaProject).resolveClasspath(rawClasspath, false/*don't use previous session*/, false/*don't resolve chained libraries*/).resolvedClasspath; } catch(JavaModelException e){ return e.getJavaModelStatus(); } Index: model/org/eclipse/jdt/internal/core/JavaProject.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaProject.java,v retrieving revision 1.419 diff -u -r1.419 JavaProject.java --- model/org/eclipse/jdt/internal/core/JavaProject.java 13 Nov 2008 09:03:55 -0000 1.419 +++ model/org/eclipse/jdt/internal/core/JavaProject.java 15 Jan 2009 12:08:39 -0000 @@ -2473,7 +2473,7 @@ * Resolve the given raw classpath. */ public IClasspathEntry[] resolveClasspath(IClasspathEntry[] rawClasspath) throws JavaModelException { - return resolveClasspath(rawClasspath, false/*don't use previous session*/).resolvedClasspath; + return resolveClasspath(rawClasspath, false/*don't use previous session*/, true/*resolve chained libraries*/).resolvedClasspath; } class ResolvedClasspath { @@ -2483,7 +2483,7 @@ Map rootPathToResolvedEntries = new HashMap(); } - private ResolvedClasspath resolveClasspath(IClasspathEntry[] rawClasspath, boolean usePreviousSession) throws JavaModelException { + public ResolvedClasspath resolveClasspath(IClasspathEntry[] rawClasspath, boolean usePreviousSession, boolean resolveChainedLibraries) throws JavaModelException { JavaModelManager manager = JavaModelManager.getJavaModelManager(); ExternalFoldersManager externalFoldersManager = JavaModelManager.getExternalManager(); ResolvedClasspath result = new ResolvedClasspath(); @@ -2509,7 +2509,7 @@ if (resolvedEntry == null) { result.unresolvedEntryStatus = new JavaModelStatus(IJavaModelStatusConstants.CP_VARIABLE_PATH_UNBOUND, this, rawEntry.getPath()); } else { - if (resolvedEntry.getEntryKind() == IClasspathEntry.CPE_LIBRARY) { + if (resolveChainedLibraries && resolvedEntry.getEntryKind() == IClasspathEntry.CPE_LIBRARY) { // resolve Class-Path: in manifest ClasspathEntry[] extraEntries = ((ClasspathEntry) resolvedEntry).resolvedChainedLibraries(); for (int j = 0, length2 = extraEntries.length; j < length2; j++) { @@ -2551,10 +2551,12 @@ // resolve ".." in library path cEntry = cEntry.resolvedDotDot(); - // resolve Class-Path: in manifest - ClasspathEntry[] extraEntries = cEntry.resolvedChainedLibraries(); - for (int k = 0, length2 = extraEntries.length; k < length2; k++) { - addToResult(rawEntry, extraEntries[k], result, resolvedEntries, externalFoldersManager); + if (resolveChainedLibraries) { + // resolve Class-Path: in manifest + ClasspathEntry[] extraEntries = cEntry.resolvedChainedLibraries(); + for (int k = 0, length2 = extraEntries.length; k < length2; k++) { + addToResult(rawEntry, extraEntries[k], result, resolvedEntries, externalFoldersManager); + } } } addToResult(rawEntry, cEntry, result, resolvedEntries, externalFoldersManager); @@ -2565,10 +2567,12 @@ // resolve ".." in library path resolvedEntry = ((ClasspathEntry) rawEntry).resolvedDotDot(); - // resolve Class-Path: in manifest - ClasspathEntry[] extraEntries = ((ClasspathEntry) resolvedEntry).resolvedChainedLibraries(); - for (int k = 0, length2 = extraEntries.length; k < length2; k++) { - addToResult(rawEntry, extraEntries[k], result, resolvedEntries, externalFoldersManager); + if (resolveChainedLibraries) { + // resolve Class-Path: in manifest + ClasspathEntry[] extraEntries = ((ClasspathEntry) resolvedEntry).resolvedChainedLibraries(); + for (int k = 0, length2 = extraEntries.length; k < length2; k++) { + addToResult(rawEntry, extraEntries[k], result, resolvedEntries, externalFoldersManager); + } } addToResult(rawEntry, resolvedEntry, result, resolvedEntries, externalFoldersManager); @@ -2618,7 +2622,7 @@ timeStamp = perProjectInfo.rawTimeStamp; } - ResolvedClasspath result = resolveClasspath(rawClasspath, usePreviousSession); + ResolvedClasspath result = resolveClasspath(rawClasspath, usePreviousSession, true/*resolve chained libraries*/); if (CP_RESOLUTION_BP_LISTENERS != null) breakpoint(2, this);