Lombok: [BUG] Lombok and MapStruct no longer work on JDK 1.8

Created on 17 Oct 2020  Â·  14Comments  Â·  Source: projectlombok/lombok

Describe the bug
I was upgrading the MapStruct examples to use the new lombok-mapstruct-examples and it seems like they are compiled with source and target of JDK 9.

To Reproduce
Try to use Lombok and MapStruct on JDK 1.8. It will stop working. Seems like Maven does not print the warning, but with Gradle you can clearly see the error when loading the new Lombok AstModifyingAnnotationProcessor.

Expected behavior
Lombok and Mapstruct should work on JDK 1.8. This of course is obsolete if you say that you are no longer supporting MapStruct on JDK 1.8.

Version info (please complete the following information):

  • Lombok version 1.18.16
  • Platform: javac 1.8
warning: Failed to read AstModifyingAnnotationProcessor. Reading next processor. Reason: 
java.lang.UnsupportedClassVersionError: lombok/mapstruct/NotifierHider$AstModificationNotifier has been compiled by a more recent version of the Java Runtime (class file version 53.0), this version of the Java Runtime only recognizes class file versions up to 52.0    
at java.lang.ClassLoader.defineClass1(Native Method)    
at java.lang.ClassLoader.defineClass(ClassLoader.java:757)      
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)      
at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)     
at java.net.URLClassLoader.access$100(URLClassLoader.java:74)   
at java.net.URLClassLoader$1.run(URLClassLoader.java:369)   
at java.net.URLClassLoader$1.run(URLClassLoader.java:363)   
at java.security.AccessController.doPrivileged(Native Method)   
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)   
at java.lang.ClassLoader.loadClass(ClassLoader.java:419)    
at java.lang.ClassLoader.loadClass(ClassLoader.java:352)    
at java.lang.Class.forName0(Native Method)      
at java.lang.Class.forName(Class.java:348)      
at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:370)     
at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)    
at java.util.ServiceLoader$1.next(ServiceLoader.java:480)   
at org.mapstruct.ap.internal.util.AnnotationProcessorContext$FaultyDelegatingIterator.next(AnnotationProcessorContext.java:207)     
at org.mapstruct.ap.internal.util.AnnotationProcessorContext$FaultyDelegatingIterator.next(AnnotationProcessorContext.java:175)     
at org.mapstruct.ap.internal.util.AnnotationProcessorContext.findAstModifyingAnnotationProcessors(AnnotationProcessorContext.java:166)      
at org.mapstruct.ap.internal.util.AnnotationProcessorContext.<init>(AnnotationProcessorContext.java:58)     
at org.mapstruct.ap.MappingProcessor.init(MappingProcessor.java:131)    
at org.gradle.api.internal.tasks.compile.processing.DelegatingProcessor.init(DelegatingProcessor.java:57)   
at org.gradle.api.internal.tasks.compile.processing.IsolatingProcessor.init(IsolatingProcessor.java:44)     
at org.gradle.api.internal.tasks.compile.processing.DelegatingProcessor.init(DelegatingProcessor.java:57)   
at org.gradle.api.internal.tasks.compile.processing.TimeTrackingProcessor.access$301(TimeTrackingProcessor.java:37)     
at org.gradle.api.internal.tasks.compile.processing.TimeTrackingProcessor$4.create(TimeTrackingProcessor.java:88)   
at org.gradle.api.internal.tasks.compile.processing.TimeTrackingProcessor$4.create(TimeTrackingProcessor.java:85)   
at org.gradle.api.internal.tasks.compile.processing.TimeTrackingProcessor.track(TimeTrackingProcessor.java:117)     
at org.gradle.api.internal.tasks.compile.processing.TimeTrackingProcessor.init(TimeTrackingProcessor.java:85)   
at com.sun.tools.javac.processing.JavacProcessingEnvironment$ProcessorState.<init>(JavacProcessingEnvironment.java:508)     
at com.sun.tools.javac.processing.JavacProcessingEnvironment$DiscoveredProcessors$ProcessorStateIterator.next(JavacProcessingEnvironment.java:605)      
at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:698)   
at com.sun.tools.javac.processing.JavacProcessingEnvironment.access$1800(JavacProcessingEnvironment.java:91)    
at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1043)    
at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1184)     
at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1170)     
at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:856)     
at com.sun.tools.javac.main.Main.compile(Main.java:523)     
at com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:129)     
at com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:138)   
at org.gradle.api.internal.tasks.compile.AnnotationProcessingCompileTask.call(AnnotationProcessingCompileTask.java:93)      
at org.gradle.api.internal.tasks.compile.ResourceCleaningCompilationTask.call(ResourceCleaningCompilationTask.java:57)      
at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:54)   
at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:39)   
at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.delegateAndHandleErrors(NormalizingJavaCompiler.java:100)      
at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.execute(NormalizingJavaCompiler.java:52)   
at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.execute(NormalizingJavaCompiler.java:38)   
at org.gradle.api.internal.tasks.compile.AnnotationProcessorDiscoveringCompiler.execute(AnnotationProcessorDiscoveringCompiler.java:51)     
at org.gradle.api.internal.tasks.compile.AnnotationProcessorDiscoveringCompiler.execute(AnnotationProcessorDiscoveringCompiler.java:37)     
at org.gradle.api.internal.tasks.compile.CleaningJavaCompiler.execute(CleaningJavaCompiler.java:53)     
at org.gradle.api.internal.tasks.compile.incremental.IncrementalCompilerFactory.lambda$createRebuildAllCompiler$0(IncrementalCompilerFactory.java:98)   
at org.gradle.api.internal.tasks.compile.incremental.IncrementalResultStoringCompiler.execute(IncrementalResultStoringCompiler.java:60)     
at org.gradle.api.internal.tasks.compile.incremental.IncrementalResultStoringCompiler.execute(IncrementalResultStoringCompiler.java:44)     
at org.gradle.api.internal.tasks.compile.CompileJavaBuildOperationReportingCompiler$2.call(CompileJavaBuildOperationReportingCompiler.java:59)      
at org.gradle.api.internal.tasks.compile.CompileJavaBuildOperationReportingCompiler$2.call(CompileJavaBuildOperationReportingCompiler.java:51)      
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)    
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)    
at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)   
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)     
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)     
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)    
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)   
at org.gradle.api.internal.tasks.compile.CompileJavaBuildOperationReportingCompiler.execute(CompileJavaBuildOperationReportingCompiler.java:51)     
at org.gradle.api.tasks.compile.JavaCompile.performCompilation(JavaCompile.java:211)    
at org.gradle.api.tasks.compile.JavaCompile.compile(JavaCompile.java:182)   
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)      
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)    
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)    
at java.lang.reflect.Method.invoke(Method.java:498)     
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:104)   
at org.gradle.api.internal.project.taskfactory.IncrementalInputsTaskAction.doExecute(IncrementalInputsTaskAction.java:32)   
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:42)   
at org.gradle.api.internal.project.taskfactory.AbstractIncrementalTaskAction.execute(AbstractIncrementalTaskAction.java:25)     
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:28)   
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.run(ExecuteActionsTaskExecuter.java:568)    
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)    
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)    
at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)   
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)     
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)     
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)      
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)    
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:553)    
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:536)   
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$300(ExecuteActionsTaskExecuter.java:109)   
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.executeWithPreviousOutputFiles(ExecuteActionsTaskExecuter.java:276)     
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:265)    
at org.gradle.internal.execution.steps.ExecuteStep.lambda$execute$0(ExecuteStep.java:32)    
at java.util.Optional.map(Optional.java:215)    
at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:32)     
at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:26)     
at org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:67)   
at org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:36)   
at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:49)     
at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:34)     
at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:43)     
at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:73)   
at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:54)     
at org.gradle.internal.execution.steps.CatchExceptionStep.execute(CatchExceptionStep.java:34)   
at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:44)     
at org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:54)     
at org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:38)     
at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:49)   
at org.gradle.internal.execution.steps.CacheStep.executeWithoutCache(CacheStep.java:153)    
at org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:67)     
at org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:41)     
at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:44)     
at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:33)     
at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:38)     
at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:24)     
at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:92)    
at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:85)      
at java.util.Optional.map(Optional.java:215)    
at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:55)   
at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:39)   
at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:76)   
at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:37)   
at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:36)    
at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:26)    
at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:94)     
at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:49)     
at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:79)     
at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:53)     
at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:74)   
at org.gradle.internal.execution.steps.SkipEmptyWorkStep.lambda$execute$2(SkipEmptyWorkStep.java:78)    
at java.util.Optional.orElseGet(Optional.java:267)      
at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:78)     
at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:34)     
at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:39)      
at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:40)   
at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:28)   
at org.gradle.internal.execution.impl.DefaultWorkExecutor.execute(DefaultWorkExecutor.java:33)      
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:192)   
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:184)      
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:114)    
at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)   
at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:62)   
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)     
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)   
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)   
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)   
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)      
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)      
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)    
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)    
at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)   
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)     
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)     
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)    
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)   
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)     
at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:41)   
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:372)   
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:359)   
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:352)      
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:338)      
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)      
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)   
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)   
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)   
at org.gradle.execution.plan.DefaultPlanExecutor.process(DefaultPlanExecutor.java:72)   
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph.executeWithServices(DefaultTaskExecutionGraph.java:189)     
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph.execute(DefaultTaskExecutionGraph.java:166)     
at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:41)    
at org.gradle.execution.DefaultBuildWorkExecutor.execute(DefaultBuildWorkExecutor.java:40)      
at org.gradle.execution.DefaultBuildWorkExecutor.access$000(DefaultBuildWorkExecutor.java:24)   
at org.gradle.execution.DefaultBuildWorkExecutor$1.proceed(DefaultBuildWorkExecutor.java:48)    
at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:49)      
at org.gradle.execution.DefaultBuildWorkExecutor.execute(DefaultBuildWorkExecutor.java:40)      
at org.gradle.execution.DefaultBuildWorkExecutor.execute(DefaultBuildWorkExecutor.java:33)      
at org.gradle.execution.IncludedBuildLifecycleBuildWorkExecutor.execute(IncludedBuildLifecycleBuildWorkExecutor.java:36)    
at org.gradle.execution.DeprecateUndefinedBuildWorkExecutor.execute(DeprecateUndefinedBuildWorkExecutor.java:41)    
at org.gradle.execution.BuildOperationFiringBuildWorkerExecutor$ExecuteTasks.run(BuildOperationFiringBuildWorkerExecutor.java:57)   
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)    
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)    
at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)   
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)     
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)     
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)      
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)    
at org.gradle.execution.BuildOperationFiringBuildWorkerExecutor.execute(BuildOperationFiringBuildWorkerExecutor.java:42)    
at org.gradle.initialization.DefaultGradleLauncher.runWork(DefaultGradleLauncher.java:255)      
at org.gradle.initialization.DefaultGradleLauncher.doClassicBuildStages(DefaultGradleLauncher.java:164)     
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:140)    
at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:120)     
at org.gradle.composite.internal.DefaultIncludedBuild$1.run(DefaultIncludedBuild.java:216)      
at org.gradle.internal.work.DefaultWorkerLeaseService.withSharedLease(DefaultWorkerLeaseService.java:119)   
at org.gradle.internal.work.StopShieldingWorkerLeaseService.withSharedLease(StopShieldingWorkerLeaseService.java:70)    
at org.gradle.composite.internal.DefaultIncludedBuild.execute(DefaultIncludedBuild.java:213)    
at org.gradle.composite.internal.DefaultIncludedBuildController.doBuild(DefaultIncludedBuildController.java:196)    
at org.gradle.composite.internal.DefaultIncludedBuildController.run(DefaultIncludedBuildController.java:106)    
at org.gradle.composite.internal.DefaultIncludedBuildControllers$BuildOpRunnable.run(DefaultIncludedBuildControllers.java:126)      
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)      
at java.util.concurrent.FutureTask.run(FutureTask.java:266)     
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)   
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)    
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)      
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)      
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)    
at java.lang.Thread.run(Thread.java:748)  
awaiting-fix-confirmation

Most helpful comment

Thanks for the suggestion, no need for that though.

We've just released lombok-mapstruct-binding:0.2.0 but it may take some time to be available on all mirrors.

Please let us knows it that fixes the problem.

All 14 comments

Have you tried adding "lombok-mapstruct-binding" as dependency ?

from the changelog for 1.18.16:

BREAKING CHANGE: mapstruct users should now add a dependency to lombok-mapstruct-binding. This solves compiling modules with lombok (and mapstruct).

Yes I added the lombok-mapstruct-binding, maybe I should have been clearer. The problem is that the lombok-mapstruct-binding is compiled with Java 9 and therefore it doesn't work when you try to compile your project with Java 8. On Java 9+ it works without problems.

As lombok supports old Java versions this one is probably unintended. I could not find the source code of lombok-mapstruct-binding but most likely they only need to recompile it using an older target version.

It is explicitly build with Java 1.9 in https://github.com/rzwitserloot/lombok/blob/master/buildScripts/mapstructBinding.ant.xml. The fix would be to change that 1.9 to 1.8. However, there are some module related things in there. That's why I opened this so we can have an official statement from the Lombok team, they would know why 1.9 was used

We are unable to use mapstruct 1.4.1 with lombok 1.18.16 due to the above mentioned issue. Is lombok moving away from java 8 as the compile target ?

I think it's more likely due to
1) the two maintainers probably no longer doing their
tuesday-hack-on-lombok night since the Corona crisis kicked in.
2) both of them being extremely busy people in general.

I've seen a number of bugs and regressions pop up lately, and little
response from them. It's a bit of a worry really.

On Tue, Dec 1, 2020, 20:33 robemmery notifications@github.com wrote:

We are unable to use mapstruct 1.4.1 with lombok 1.18.16 due to the above
mentioned issue. Is lombok moving away from java 8 as the compile target ?

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/rzwitserloot/lombok/issues/2616#issuecomment-736770941,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AABIERJ6UM36ZS26GZ7RES3SSVAKFANCNFSM4SUFZSCA
.

@filiphr Have you considered submitting a PR for this change? It seems like you identified the cause and it's fairly straight forward.

@robemmery did you see my comment in https://github.com/rzwitserloot/lombok/issues/2616#issuecomment-711163104?

Submitting a PR is easy as it is a matter of switching the target. However, considering that all the other Lombok modules are compiled with Java 8 I would like some feedback from the Lombok maintainers before doing any changes.

Hi, indeed since corona we have less time to spend on lombok. And we switched to Thursdays...

I agree that we would need to publish a new version on maven central compiled with 1.8.

@filiphr Unfortunately. I do not recall any reason why we used 1.9 there. It might have been by accident, or to work around some problem I encountered at the time.

I'll see if we can ship a 1.8 version soon.

The lombok code base is for most part java 6 compatible. But I didn't expect so many people using lombok + mapstruct on java 8...

Out of curiosity, please put in the comments why you're not using java 11+?

Oh, duh, the whole purpose of this separate dependency was to fix module problems. So we need some java 9 compilation, but java 8 class files.

@rspilker maybe you can have a look at the Multi Release jar option. You can put the module class then in the java 9 version

Thanks for the suggestion, no need for that though.

We've just released lombok-mapstruct-binding:0.2.0 but it may take some time to be available on all mirrors.

Please let us knows it that fixes the problem.

Thanks @rspilker!

Out of curiosity, please put in the comments why you're not using java 11+?

Some our builds at Netflix are still compiling with java 8 target. I appreciate the quick response amid the circumstances.

Best,
-R

Was this page helpful?
0 / 5 - 0 ratings

Related issues

eximius313 picture eximius313  Â·  45Comments

arana198 picture arana198  Â·  53Comments

t-kuester picture t-kuester  Â·  31Comments

lombokissues picture lombokissues  Â·  61Comments

rspilker picture rspilker  Â·  98Comments