Open Chessray opened 1 year ago
Hello @myatmin,
Could you please provide a minimum example project for this behaviour - including the Eclipse project files?
Closed as no reaction in nearly a year.
Hi @Chessray,
Please accept my sincerest apologies. I missed out this issue notification.
I only have VSCode devcontainer
sample project.
mapstruct-example.zip
Can you just copy java
files from the following package com.mapstruct.example.mapstructexample.mapper
to your blank Eclipse project and see whether it generate all of the classes like adapter class and converter class?
Hi @Chessray ,
I managed to open the sample project in Eclipse.
Following error message is still encountered.
Exception thrown by Java annotation processor org.mapstruct.extensions.spring.converter.ConverterMapperProcessor@7ea584e6
java.lang.Exception: java.lang.ClassCastException: class org.eclipse.jdt.internal.compiler.apt.model.AnnotationValueImpl cannot be cast to class javax.lang.model.element.AnnotationMirror (org.eclipse.jdt.internal.compiler.apt.model.AnnotationValueImpl is in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @183f9933; javax.lang.model.element.AnnotationMirror is in module java.compiler of loader 'platform')
at org.eclipse.jdt.internal.compiler.apt.dispatch.RoundDispatcher.handleProcessor(RoundDispatcher.java:172)
at org.eclipse.jdt.internal.compiler.apt.dispatch.RoundDispatcher.round(RoundDispatcher.java:124)
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:953)
at org.eclipse.jdt.internal.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:406)
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:273)
at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:188)
at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:1079)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:296)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:352)
at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:441)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:444)
at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:555)
at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:503)
at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:585)
at org.eclipse.core.internal.resources.Workspace.buildInternal(Workspace.java:594)
at org.eclipse.core.internal.resources.Workspace.build(Workspace.java:490)
at org.eclipse.ui.actions.BuildAction$1.runInWorkspace(BuildAction.java:291)
at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:43)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Caused by: java.lang.ClassCastException: class org.eclipse.jdt.internal.compiler.apt.model.AnnotationValueImpl cannot be cast to class javax.lang.model.element.AnnotationMirror (org.eclipse.jdt.internal.compiler.apt.model.AnnotationValueImpl is in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @183f9933; javax.lang.model.element.AnnotationMirror is in module java.compiler of loader 'platform')
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
at org.mapstruct.extensions.spring.converter.ConverterMapperProcessor.toFromToMappings(ConverterMapperProcessor.java:160)
at java.base/java.util.Optional.map(Optional.java:260)
at org.mapstruct.extensions.spring.converter.ConverterMapperProcessor.getExternalConversionMappings(ConverterMapperProcessor.java:152)
at org.mapstruct.extensions.spring.converter.ConverterMapperProcessor.buildAdapterDescriptor(ConverterMapperProcessor.java:137)
at org.mapstruct.extensions.spring.converter.ConverterMapperProcessor.process(ConverterMapperProcessor.java:101)
at org.eclipse.jdt.internal.compiler.apt.dispatch.RoundDispatcher.handleProcessor(RoundDispatcher.java:142)
... 27 more
Your project setup is wrong. You've configured the processors as regular Maven dependencies instead of annotation processing additions. Check https://mapstruct.org/documentation/stable/reference/html/#_apache_maven and https://mapstruct.org/documentation/spring-extensions/reference/html/#_apache_maven
Hi @Chessray ,
Yes, I edited to correct one when I opened it in Eclipse. Here is the sample project. mapstruct-example.zip
It's having issue with ECJ but working fine with Javac. (Tried with IntelliJ)
VSCode Java and Eclipse use ECJ and having problem with @ExternalConversion
.
Judging from the linked thread, this issue has to be fixed inside ECJ; therefore I'll close this one.
Hi @Chessray,
After ECJ team checking of the above mentioned issue, actually ECJ followed the implementation correctly. Detail explanation can be found in this comment. Hibernate metamodel generator also corrected their generation issue too. See the issue link in this comment.
Originally posted by @myatmin in https://github.com/mapstruct/mapstruct-spring-extensions/issues/53#issuecomment-1263110178