Community
Participate
Working Groups
Using Windows, which is has a case-insensitive file system. In APT, we create compilation units when certain annotations are encountered. We ran into an error in the following case: At one point, we generated a type, "test.HelloBean". Later, we attempt to generate "test.helloBean", which is the same but a different case. JDT is then unable to create the compilation unit, as it doesn't seem to handle the case where the IFile doesn't exist, but a matching file with different case does. Here's the stack trace: Java Model Exception: Core Exception [code 275] A resource exists with a different case: /Util/build/apt/.src/test/HelloBean.java. at org.eclipse.jdt.internal.core.JavaModelOperation.createFile(JavaModelOperation.java:261) at org.eclipse.jdt.internal.core.CreateCompilationUnitOperation.executeOperation(CreateCompilationUnitOperation.java:120) at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:718) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1719) at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:782) at org.eclipse.jdt.internal.core.PackageFragment.createCompilationUnit(PackageFragment.java:135) at org.eclipse.jdt.apt.core.internal.generatedfile.GeneratedFileManager.generateFileDuringBuild(GeneratedFileManager.java:269) at org.eclipse.jdt.apt.core.internal.env.JavaSourceFilePrintWriter.close(JavaSourceFilePrintWriter.java:57) at org.apache.beehive.controls.runtime.generator.IndentingWriter.close(IndentingWriter.java:94) at org.apache.beehive.controls.runtime.generator.VelocityGenerator.generate(VelocityGenerator.java:85) at org.apache.beehive.controls.runtime.generator.apt.ControlAnnotationProcessor.check(ControlAnnotationProcessor.java:91) at org.apache.beehive.controls.runtime.generator.apt.TwoPhaseAnnotationProcessor.check(TwoPhaseAnnotationProcessor.java:104) at org.apache.beehive.controls.runtime.generator.apt.TwoPhaseAnnotationProcessor.process(TwoPhaseAnnotationProcessor.java:86) at org.eclipse.jdt.apt.core.internal.APTDispatchRunnable.runAPTInFileBasedMode(APTDispatchRunnable.java:311) at org.eclipse.jdt.apt.core.internal.APTDispatchRunnable.runAPT(APTDispatchRunnable.java:558) at org.eclipse.jdt.apt.core.internal.APTDispatchRunnable.runAPT(APTDispatchRunnable.java:470) at org.eclipse.jdt.apt.core.internal.APTDispatchRunnable.run(APTDispatchRunnable.java:210) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1719) at org.eclipse.jdt.apt.core.internal.APTDispatch.runAPT(APTDispatch.java:90) at org.eclipse.jdt.apt.core.internal.APTDispatch.runAPTDuringBuild(APTDispatch.java:47) at org.eclipse.jdt.apt.core.internal.AptCompilationParticipant.preBuildNotify(AptCompilationParticipant.java:130) at org.eclipse.jdt.apt.core.internal.AptCompilationParticipant.notify(AptCompilationParticipant.java:88) at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.notifyCompilationParticipants(AbstractImageBuilder.java:271) at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:459) at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:206) at org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.build(IncrementalImageBuilder.java:114) at org.eclipse.jdt.internal.core.builder.JavaBuilder.buildDeltas(JavaBuilder.java:238) at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:166) at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:593) at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:1044) at org.eclipse.core.runtime.Platform.run(Platform.java:783) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:168) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:202) at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:231) at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:1044) at org.eclipse.core.runtime.Platform.run(Platform.java:783) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:234) at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:253) at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:282) at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:139) at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:200) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:76) Caused by: org.eclipse.core.internal.resources.ResourceException: A resource exists with a different case: /Util/build/apt/.src/test/HelloBean.java. at org.eclipse.core.internal.resources.Resource.checkDoesNotExist(Resource.java:274) at org.eclipse.core.internal.resources.File.create(File.java:108) at org.eclipse.jdt.internal.core.JavaModelOperation.createFile(JavaModelOperation.java:255) at org.eclipse.jdt.internal.core.CreateCompilationUnitOperation.executeOperation(CreateCompilationUnitOperation.java:120) at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:718) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1719) at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:782) at org.eclipse.jdt.internal.core.PackageFragment.createCompilationUnit(PackageFragment.java:135) at org.eclipse.jdt.apt.core.internal.generatedfile.GeneratedFileManager.generateFileDuringBuild(GeneratedFileManager.java:269) at org.eclipse.jdt.apt.core.internal.env.JavaSourceFilePrintWriter.close(JavaSourceFilePrintWriter.java:57) at org.apache.beehive.controls.runtime.generator.IndentingWriter.close(IndentingWriter.java:94) at org.apache.beehive.controls.runtime.generator.VelocityGenerator.generate(VelocityGenerator.java:85) at org.apache.beehive.controls.runtime.generator.apt.ControlAnnotationProcessor.check(ControlAnnotationProcessor.java:91) at org.apache.beehive.controls.runtime.generator.apt.TwoPhaseAnnotationProcessor.check(TwoPhaseAnnotationProcessor.java:104) at org.apache.beehive.controls.runtime.generator.apt.TwoPhaseAnnotationProcessor.process(TwoPhaseAnnotationProcessor.java:86) at org.eclipse.jdt.apt.core.internal.APTDispatchRunnable.runAPTInFileBasedMode(APTDispatchRunnable.java:311) at org.eclipse.jdt.apt.core.internal.APTDispatchRunnable.runAPT(APTDispatchRunnable.java:558) at org.eclipse.jdt.apt.core.internal.APTDispatchRunnable.runAPT(APTDispatchRunnable.java:470) at org.eclipse.jdt.apt.core.internal.APTDispatchRunnable.run(APTDispatchRunnable.java:210) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1719) at org.eclipse.jdt.apt.core.internal.APTDispatch.runAPT(APTDispatch.java:90) at org.eclipse.jdt.apt.core.internal.APTDispatch.runAPTDuringBuild(APTDispatch.java:47) at org.eclipse.jdt.apt.core.internal.AptCompilationParticipant.preBuildNotify(AptCompilationParticipant.java:130) at org.eclipse.jdt.apt.core.internal.AptCompilationParticipant.notify(AptCompilationParticipant.java:88) at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.notifyCompilationParticipants(AbstractImageBuilder.java:271) at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:459) at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:206) at org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.build(IncrementalImageBuilder.java:114) at org.eclipse.jdt.internal.core.builder.JavaBuilder.buildDeltas(JavaBuilder.java:238) at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:166) at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:593) at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:1044) at org.eclipse.core.runtime.Platform.run(Platform.java:783) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:168) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:202) at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:231) at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:1044) at org.eclipse.core.runtime.Platform.run(Platform.java:783) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:234) at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:253) at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:282) at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:139) at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:200) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:76) One possible fix would be to look at the underlying file system via java.io.File, but that seems like a bit of a hack. Any ideas here? Thanks!
This seems to be handled in HEAD. APT now logs an error about the fact that the second unit could not be created.
Verified for 3.6M5 (by code inspection)