Index: src/org/eclipse/jdt/core/tests/builder/CopyResourceTests.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/CopyResourceTests.java,v retrieving revision 1.21 diff -u -r1.21 CopyResourceTests.java --- src/org/eclipse/jdt/core/tests/builder/CopyResourceTests.java 6 Mar 2007 04:43:25 -0000 1.21 +++ src/org/eclipse/jdt/core/tests/builder/CopyResourceTests.java 7 May 2007 19:25:19 -0000 @@ -268,4 +268,28 @@ expectingNoProblems(); expectingPresenceOf(bin.append("z.txt")); //$NON-NLS-1$ } + + //https://bugs.eclipse.org/bugs/show_bug.cgi?id=154693 + public void testBug154693() throws JavaModelException { + IPath projectPath = env.addProject("P9"); //$NON-NLS-1$ + env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$ + IPath src = env.addPackageFragmentRoot(projectPath, "src"); //$NON-NLS-1$ + env.setOutputFolder(projectPath, "bin"); //$NON-NLS-1$ + env.addExternalJars(projectPath, Util.getJavaClassLibs()); + + org.eclipse.jdt.core.IJavaProject p = env.getJavaProject("P9"); + java.util.Map options = p.getOptions(true); + options.put(org.eclipse.jdt.core.JavaCore.CORE_JAVA_BUILD_RESOURCE_COPY_FILTER, ".svn/"); //$NON-NLS-1$ + p.setOptions(options); + + IPath folder = env.addFolder(src, "p"); + env.addFolder(folder, ".svn"); + env.addFile(folder, "A.java", "package p;\nclass A{}"); //$NON-NLS-1$ //$NON-NLS-2$ + + fullBuild(); + expectingNoProblems(); + expectingNoPresenceOf(new IPath[] { + projectPath.append("bin/p/.svn") //$NON-NLS-1$ + }); + } } Index: model/org/eclipse/jdt/internal/core/builder/AbstractImageBuilder.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/builder/AbstractImageBuilder.java,v retrieving revision 1.110 diff -u -r1.110 AbstractImageBuilder.java --- model/org/eclipse/jdt/internal/core/builder/AbstractImageBuilder.java 19 Apr 2007 17:11:31 -0000 1.110 +++ model/org/eclipse/jdt/internal/core/builder/AbstractImageBuilder.java 7 May 2007 19:25:19 -0000 @@ -243,7 +243,13 @@ if (!isOutputFolder) { if (folderPath == null) folderPath = proxy.requestFullPath(); - createFolder(folderPath.removeFirstSegments(segmentCount), outputFolder); + String packageName = folderPath.lastSegment(); + if (packageName.length() > 0) { + String sourceLevel = javaBuilder.javaProject.getOption(JavaCore.COMPILER_SOURCE, true); + String complianceLevel = javaBuilder.javaProject.getOption(JavaCore.COMPILER_COMPLIANCE, true); + if (JavaConventions.validatePackageName(packageName, sourceLevel, complianceLevel).getSeverity() != IStatus.ERROR) + createFolder(folderPath.removeFirstSegments(segmentCount), outputFolder); + } } } return true;