Lombok mit Java > 8

Lombok

Ist Lombok unter Eclipse installiert und läuft Eclipse auf einer VM größer Java 8, dann kommt es beim aktualisieren des Gradle Modells unter Eclipse zu einer Fehlermeldung die erst einmal keinen direkten Rückschluss auf Lombok zulässt.

Gradle Buildfehler

Ist Lombok im Klassenpfad der VM von Eclipse geladen, dann kommt es zu folgender Fehlermeldung wenn man ein Gradle Projekt in der Workbench aktualisiert.

Errors occurred during the build.
    Errors running builder 'Java Builder' on project 'tornet'.
    Unknown constant pool type 19

Startet man Eclipse auf der Konsole, so kann man zumindest den Stacktrace zu dem BuildError sehen.

java.lang.AssertionError: Unknown constant pool type 19
        at lombok.bytecode.ClassFileMetaData.<init>(ClassFileMetaData.java:104)
        at lombok.bytecode.PreventNullAnalysisRemover.applyTransformations(PreventNullAnalysisRemover.java:42)
        at lombok.core.PostCompiler.applyTransformations(PostCompiler.java:43)
        at lombok.eclipse.agent.PatchFixesShadowLoaded.runPostCompiler(PatchFixesShadowLoaded.java:41)
        at jdk.internal.reflect.GeneratedMethodAccessor44.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:564)
        at lombok.launch.PatchFixesHider$Util.invokeMethod(PatchFixesHider.java:115)
        at lombok.launch.PatchFixesHider$LombokDeps.runPostCompiler(PatchFixesHider.java:155)
        at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.writeClassFileContents(AbstractImageBuilder.java:880)
        at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.writeClassFile(AbstractImageBuilder.java:871)
        at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.acceptResult(AbstractImageBuilder.java:200)
        at org.eclipse.jdt.internal.compiler.Compiler.processCompiledUnits(Compiler.java:615)
        at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:472)
        at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:423)
        at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:383)
        at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.compile(BatchImageBuilder.java:211)
        at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:315)
        at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.build(BatchImageBuilder.java:76)
        at org.eclipse.jdt.internal.core.builder.JavaBuilder.buildAll(JavaBuilder.java:259)
        at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:182)
        at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:795)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
        at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:216)
        at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:259)
        at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:312)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
        at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:315)
        at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:367)
        at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:388)
        at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:142)
        at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:232)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:60)

Diesen kann man sehen das es zu einem Assertion Error kommt.

Lösung

Zur Zeit ist mir noch keine Lösung hierzu bekannt und es hilft nur den Java Agenten von Lombok aus der Eclipse.ini auszukommentieren.

-vmargs
--add-modules=ALL-SYSTEM
-Xms40m
-Xmx1200m
# build error in projects...
#-javaagent:lombok.j