### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.ui Index: ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/BuildPathsBlock.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/BuildPathsBlock.java,v retrieving revision 1.157 diff -u -r1.157 BuildPathsBlock.java --- ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/BuildPathsBlock.java 1 Feb 2007 15:41:40 -0000 1.157 +++ ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/BuildPathsBlock.java 26 Apr 2007 15:21:06 -0000 @@ -763,7 +763,7 @@ //create and set the output path first if (!fWorkspaceRoot.exists(outputLocation)) { IFolder folder= fWorkspaceRoot.getFolder(outputLocation); - CoreUtility.createFolder(folder, true, true, new SubProgressMonitor(monitor, 1)); + CoreUtility.createDerivedFolder(folder, true, true, new SubProgressMonitor(monitor, 1)); folder.setDerived(true); } else { monitor.worked(1); @@ -794,7 +794,7 @@ IPath folderOutput= (IPath) entry.getAttribute(CPListElement.OUTPUT); if (folderOutput != null && folderOutput.segmentCount() > 1) { IFolder folder= fWorkspaceRoot.getFolder(folderOutput); - CoreUtility.createFolder(folder, true, true, new SubProgressMonitor(monitor, 1)); + CoreUtility.createDerivedFolder(folder, true, true, new SubProgressMonitor(monitor, 1)); } else { monitor.worked(1); } Index: ui/org/eclipse/jdt/internal/ui/wizards/JavaProjectWizardSecondPage.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/JavaProjectWizardSecondPage.java,v retrieving revision 1.39 diff -u -r1.39 JavaProjectWizardSecondPage.java --- ui/org/eclipse/jdt/internal/ui/wizards/JavaProjectWizardSecondPage.java 5 Mar 2007 20:47:24 -0000 1.39 +++ ui/org/eclipse/jdt/internal/ui/wizards/JavaProjectWizardSecondPage.java 26 Apr 2007 15:21:06 -0000 @@ -206,7 +206,7 @@ if (binPath.segmentCount() > 0 && !binPath.equals(srcPath)) { IFolder folder= fCurrProject.getFolder(binPath); - CoreUtility.createFolder(folder, true, true, new SubProgressMonitor(monitor, 1)); + CoreUtility.createDerivedFolder(folder, true, true, new SubProgressMonitor(monitor, 1)); } else { monitor.worked(1); } Index: ui/org/eclipse/jdt/internal/ui/util/CoreUtility.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/util/CoreUtility.java,v retrieving revision 1.22 diff -u -r1.22 CoreUtility.java --- ui/org/eclipse/jdt/internal/ui/util/CoreUtility.java 9 Nov 2006 11:43:37 -0000 1.22 +++ ui/org/eclipse/jdt/internal/ui/util/CoreUtility.java 26 Apr 2007 15:21:06 -0000 @@ -23,6 +23,7 @@ import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IWorkspace; import org.eclipse.core.resources.IWorkspaceDescription; import org.eclipse.core.resources.IncrementalProjectBuilder; @@ -40,7 +41,15 @@ public class CoreUtility { - + public static void createDerivedFolder(IFolder folder, boolean force, boolean local, IProgressMonitor monitor) throws CoreException { + if (!folder.exists()) { + IContainer parent= folder.getParent(); + if (parent instanceof IFolder) { + createDerivedFolder((IFolder)parent, force, local, null); + } + folder.create(force ? (IResource.FORCE | IResource.DERIVED) : IResource.DERIVED, local, monitor); + } + } /** * Creates a folder and all parent folders if not existing.