Bug 122176 Invalid project description when creating new project in default location when using NewJavaProjectWizardPage
When installing Parasoft Jtest 7.5 into Eclipse 3.2 M4, File > New > Jtest Example Project doesn't work when using the default location. I will attach a stack trace. This feature works in Eclipse 3.1.1, and I believe it also worked in Eclispe 3.2 M3. I've only tested it so far on Windows XP SP2. I've identified the problem in BuildPathsBlock.createProject(...): public static void createProject(IProject project, URI locationURI, IProgressMonitor monitor) throws CoreException { ... IProjectDescription desc= project.getWorkspace().newProjectDescription(project.getName()); if (locationURI != null && ResourcesPlugin.getWorkspace().getRoot().getLocationURI().equals(locationURI)) { locationURI= null; } desc.setLocationURI(locationURI); The locationURI is derived in NewJavaProjectWizardPage.java line 303 using IPath.toFile().toURI(), and can be for example: file:/C:/temp/workspace/ But ResourcesPlugin.getWorkspace().getRoot().getLocationURI() is: file:/C:/temp/workspace Hence, since they are not "equal", locationURI is not set to null, as is the expected behavior. Later in LocationValidator.validateProjectLocationURI(...) line 326 is when the failure status is created: if (FileUtil.isOverlapping(location, defaultDefaultLocation.toFile().toURI())) This problem does not appear in Eclipse 3.1.1, because only IPath's are being compared, not URI's: public static void createProject(IProject project, IPath locationPath, IProgressMonitor monitor) throws CoreException { ... if (Platform.getLocation().equals(locationPath)) { You might be able to fix this bug by just removing any slash at the end of the URI before calling equals. But maybe a more clever equals is required here.
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/jarimport/JarImportWizard.java
final IClasspathEntry entry= (IClasspathEntry) entries.get(index);
			if (entry.getEntryKind() == IClasspathEntry.CPE_SOURCE && entry.getPath().isPrefixOf(path)) {
				final IPath[] patterns= entry.getExclusionPatterns();
				if (!JavaModelUtil.isExcludedPath(path, patterns)) {
					final IPath[] filters= new IPath[patterns.length + 1];
					System.arraycopy(patterns, 0, filters, 0, patterns.length);
					filters[patterns.length]= path.removeFirstSegments(entry.getPath().segmentCount()).addTrailingSeparator();
					entries.set(index, JavaCore.newSourceEntry(entry.getPath(), filters, entry.getOutputLocation()));
				}
			}
		}
	}
	/**
	 * Checks whether the archive referenced by the package fragment root is not
	 * shared
	 * 
	 * @param root
	 *            the package fragment root
	 * @param monitor
	 *            the progress monitor to use
	 * @return the status of the operation
	 */
	private static RefactoringStatus checkPackageFragmentRoots(final IPackageFragmentRoot root, final IProgressMonitor monitor) {
		final RefactoringStatus status= new RefactoringStatus();
		try {
			monitor.beginTask(JarImportMessages.JarImportWizard_prepare_import, 100);
			final IWorkspaceRoot workspace= ResourcesPlugin.getWorkspace().getRoot();
			if (workspace != null) {
				final IJavaModel model= JavaCore.create(workspace);
				if (model != null) {