eclipse-jdt / eclipse-jdt/eclipse.jdt.core
Eclipse 2021-12 - Error : Source file already created
- Dominant language
- Java
- Stars
- 237
- Forks
- 195
- Avg merge
- 1d 12h
- Merged PRs (30d)
- 47
Description
Hello,
this issue is linked to the issue [2857](https://github.com/mapstruct/mapstruct/issues/2857) I opened on the mapstruct project.
The problem occur within eclipse 2021-12 and 2022-03 with a project that mapstruct-processor generating source files.
it seems that eclipse tries two generate the same file at least two times, throwing an error that stops the generation process.
The result is some files are not generated.
Steps to reproduce:
1. delete the generated sources folder one way or another (ex: cleaning project from eclipse, deleting manually, rebuilding after a git pull)
2. build the eclipse project having Mapstruct as dependency with Project > Build project
Some infos:
- Using Eclipse 2021-12 (4.22.0)
- [m2e-apt](https://marketplace.eclipse.org/content/m2e-apt) plugin installed
- [mapstruct plugin](https://marketplace.eclipse.org/content/mapstruct-eclipse-plugin) installed
- In Preferences > Maven > Annotation Processing, the option `Select Annotation Processing Mode` is set to `Auto configure JDT APT`. (see annotation_processing_setting attached file)

- This exception happens only when eclipse build the project, either automatically or manually, everything is working when building the whole project using maven directly instead.
Here's the partial pom.xml file from the project:
```XML
some-group
some-project
some-project-module
1.5.0.RC1
jdt_apt
org.apache.maven.plugins
maven-compiler-plugin
org.mapstruct
mapstruct-processor
${mapstruct.version}
org.mapstruct
mapstruct
${mapstruct.version}
```
Here's the exception:
```
Internal error in the mapping processor: java.lang.RuntimeException: javax.annotation.processing.FilerException: Source file already created: /api-rosa-orm-services/target/generated-sources/annotations/fr/gouv/finances/douane/referentiel/orm/rosa/utils/mapper/relation/eaoe/EaoeSousEaMapperImpl.java
at org.mapstruct.ap.internal.processor.MapperRenderingProcessor.createSourceFile(MapperRenderingProcessor.java:59)
at org.mapstruct.ap.internal.processor.MapperRenderingProcessor.writeToSourceFile(MapperRenderingProcessor.java:39)
at org.mapstruct.ap.internal.processor.MapperRenderingProcessor.process(MapperRenderingProcessor.java:29)
at org.mapstruct.ap.internal.processor.MapperRenderingProcessor.process(MapperRenderingProcessor.java:24)
at org.mapstruct.ap.MappingProcessor.process(MappingProcessor.java:350)
at org.mapstruct.ap.MappingProcessor.processMapperTypeElement(MappingProcessor.java:330)
at org.mapstruct.ap.MappingProcessor.processMapperElements(MappingProcessor.java:279)
at org.mapstruct.ap.MappingProcessor.process(MappingProcessor.java:174)
at org.eclipse.jdt.internal.compiler.apt.dispatch.RoundDispatcher.handleProcessor(RoundDispatcher.java:142)
at org.eclipse.jdt.internal.compiler.apt.dispatch.RoundDispatcher.round(RoundDispatcher.java:113)
at org.eclipse.jdt.internal.compiler.apt.dispatch.BaseAnnotationProcessorManager.processAnnotations(BaseAnnotationProcessorManager.java:172)
at org.eclipse.jdt.internal.apt.pluggable.core.dispatch.IdeAnnotationProcessorManager.processAnnotations(IdeAnnotationProcessorManager.java:138)
at org.eclipse.jdt.internal.compiler.Compiler.processAnnotations(Compiler.java:950)
at org.eclipse.jdt.int

ernal.compiler.Compiler.compile(Compiler.java:450)
at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:426)
at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:379)
at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.compile(BatchImageBuilder.java:214)
at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:338)
at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.build(BatchImageBuilder.java:79)
at org.eclipse.jdt.internal.core.builder.JavaBuilder.buildAll(JavaBuilder.java:272)
at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:187)
at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:853)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:232)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:281)
at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:334)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:337)
at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:389)
at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:410)
at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:160)
at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:251)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) Caused by: javax.annotation.processing.FilerException: Source file already created: /api-rosa-orm-services/target/generated-sources/annotations/fr/gouv/finances/douane/referentiel/orm/rosa/utils/mapper/relation/eaoe/EaoeSousEaMapperImpl.java
at org.eclipse.jdt.internal.apt.pluggable.core.filer.IdeFilerImpl.createSourceFile(IdeFilerImpl.java:161)
at org.mapstruct.ap.internal.processor.MapperRenderingProcessor.createSourceFile(MapperRenderingProcessor.java:56) ... 32 more
```
Contributor guide
Assessment
This issue has not been assessed yet.