Lombok-intellij-plugin: "Internal java compiler error" Lombok with latest IntelliJ 2019.2 crashing

Created on 9 Aug 2019  路  19Comments  路  Source: mplushnikov/lombok-intellij-plugin

Short description

Building of lombok projects fails

Expected behavior

It should work

Version information

  • IDEA Version: 2019.2
  • JDK Version: 11.0.3
  • OS Type & Version: MacOS Mojave
  • Lombok Plugin Version: 0.25-2019.1
  • Lombok Dependency Version: 1.18.8

Steps to reproduce

Rebuild any maven project with module-info.java

Sample project

TDB

Additional information

It worked with 2019.1.

Stacktrace

Information:java: compiler message file broken: key=compiler.misc.msg.bug arguments=11, {1}, {2}, {3}, {4}, {5}, {6}, {7}
Information:java: java.lang.module.ResolutionException: Module lombok does not read a module that exports org.mapstruct.ap.spi
Information:java:   at java.base/java.lang.module.Resolver.resolveFail(Resolver.java:885)
Information:java:   at java.base/java.lang.module.Resolver.checkExportSuppliers(Resolver.java:760)
Information:java:   at java.base/java.lang.module.Resolver.finish(Resolver.java:362)
Information:java:   at java.base/java.lang.module.Configuration.<init>(Configuration.java:130)
Information:java:   at java.base/java.lang.module.Configuration.resolveAndBind(Configuration.java:484)
Information:java:   at java.base/java.lang.module.Configuration.resolveAndBind(Configuration.java:288)
Information:java:   at jdk.compiler/com.sun.tools.javac.file.JavacFileManager.getServiceLoader(JavacFileManager.java:985)
Information:java:   at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
Information:java:   at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
Information:java:   at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
Information:java:   at java.base/java.lang.reflect.Method.invoke(Method.java:566)
Information:java:   at org.jetbrains.jps.javac.JavacMain$2.invoke(JavacMain.java:290)
Information:java:   at com.sun.proxy.$Proxy22.getServiceLoader(Unknown Source)
Information:java:   at com.sun.proxy.$Proxy23.getServiceLoader(Unknown Source)
Information:java:   at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.initProcessorLoader(JavacProcessingEnvironment.java:261)
Information:java:   at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.<init>(JavacProcessingEnvironment.java:237)
Information:java:   at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.instance(JavacProcessingEnvironment.java:193)
Information:java:   at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.initProcessAnnotations(JavaCompiler.java:1136)
Information:java:   at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:922)
Information:java:   at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.lambda$doCall$0(JavacTaskImpl.java:104)
Information:java:   at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.handleExceptions(JavacTaskImpl.java:147)
Information:java:   at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:100)
Information:java:   at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:94)
Information:java:   at org.jetbrains.jps.javac.JavacMain.compile(JavacMain.java:195)
Information:java:   at org.jetbrains.jps.incremental.java.JavaBuilder.compileJava(JavaBuilder.java:460)
Information:java:   at org.jetbrains.jps.incremental.java.JavaBuilder.compile(JavaBuilder.java:330)
Information:java:   at org.jetbrains.jps.incremental.java.JavaBuilder.doBuild(JavaBuilder.java:255)
Information:java:   at org.jetbrains.jps.incremental.java.JavaBuilder.build(JavaBuilder.java:213)
Information:java:   at org.jetbrains.jps.incremental.IncProjectBuilder.runModuleLevelBuilders(IncProjectBuilder.java:1324)
Information:java:   at org.jetbrains.jps.incremental.IncProjectBuilder.runBuildersForChunk(IncProjectBuilder.java:1004)
Information:java:   at org.jetbrains.jps.incremental.IncProjectBuilder.buildTargetsChunk(IncProjectBuilder.java:1071)
Information:java:   at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunkIfAffected(IncProjectBuilder.java:965)
Information:java:   at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunks(IncProjectBuilder.java:794)
Information:java:   at org.jetbrains.jps.incremental.IncProjectBuilder.runBuild(IncProjectBuilder.java:376)
Information:java:   at org.jetbrains.jps.incremental.IncProjectBuilder.build(IncProjectBuilder.java:178)
Information:java:   at org.jetbrains.jps.cmdline.BuildRunner.runBuild(BuildRunner.java:139)
Information:java:   at org.jetbrains.jps.cmdline.BuildSession.runBuild(BuildSession.java:288)
Information:java:   at org.jetbrains.jps.cmdline.BuildSession.run(BuildSession.java:121)
Information:java:   at org.jetbrains.jps.cmdline.BuildMain$MyMessageHandler.lambda$channelRead0$0(BuildMain.java:228)
Information:java:   at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
Information:java:   at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
Information:java:   at java.base/java.lang.Thread.run(Thread.java:834)
Information:java: Errors occurred while compiling module 'orderbook-api'
Information:javac 11 was used to compile java sources
Information:2019-08-09 16:00 - Build completed with 1 error and 1 warning in 2 s 182 ms
Error:java: Compilation failed: internal java compiler error

Most helpful comment

@matejsp Thank you for clarification! Also big thanks for creating an issue on Yourtrack https://youtrack.jetbrains.com/issue/IDEA-220430

All 19 comments

Adding mapstruct-processor and plexus-contaner-default crashes with

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <annotationProcessorPaths>
                        <path>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                            <version>1.18.8</version>
                        </path>
                        <path>
                            <groupId>org.mapstruct</groupId>
                            <artifactId>mapstruct-processor</artifactId>
                            <version>1.3.0.Final</version>
                        </path>
                        <path>
                            <groupId>org.codehaus.plexus</groupId>
                            <artifactId>plexus-container-default</artifactId>
                            <version>2.0.0</version>
                        </path>
                    </annotationProcessorPaths>
                </configuration>
            </plugin>
        </plugins>
    </build>
Information:java: compiler message file broken: key=compiler.misc.msg.bug arguments=11, {1}, {2}, {3}, {4}, {5}, {6}, {7}
Information:java: java.lang.module.FindException: Unable to derive module descriptor for /Users/mspiller/.m2/repository/org/codehaus/plexus/plexus-container-default/2.0.0/plexus-container-default-2.0.0.jar
Information:java:   at java.base/jdk.internal.module.ModulePath.readJar(ModulePath.java:647)
Information:java:   at java.base/jdk.internal.module.ModulePath.readModule(ModulePath.java:330)
Information:java:   at java.base/jdk.internal.module.ModulePath.scan(ModulePath.java:236)
Information:java:   at java.base/jdk.internal.module.ModulePath.scanNextEntry(ModulePath.java:189)
Information:java:   at java.base/jdk.internal.module.ModulePath.findAll(ModulePath.java:165)
Information:java:   at java.base/java.lang.module.Resolver.findAll(Resolver.java:842)
Information:java:   at java.base/java.lang.module.Resolver.bind(Resolver.java:223)
Information:java:   at java.base/java.lang.module.Configuration.resolveAndBind(Configuration.java:482)
Information:java:   at java.base/java.lang.module.Configuration.resolveAndBind(Configuration.java:288)
Information:java:   at jdk.compiler/com.sun.tools.javac.file.JavacFileManager.getServiceLoader(JavacFileManager.java:985)
Information:java:   at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
Information:java:   at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
Information:java:   at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
Information:java:   at java.base/java.lang.reflect.Method.invoke(Method.java:566)
Information:java:   at org.jetbrains.jps.javac.JavacMain$2.invoke(JavacMain.java:290)
Information:java:   at com.sun.proxy.$Proxy21.getServiceLoader(Unknown Source)
Information:java:   at com.sun.proxy.$Proxy22.getServiceLoader(Unknown Source)
Information:java:   at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.initProcessorLoader(JavacProcessingEnvironment.java:261)
Information:java:   at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.<init>(JavacProcessingEnvironment.java:237)
Information:java:   at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.instance(JavacProcessingEnvironment.java:193)
Information:java:   at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.initProcessAnnotations(JavaCompiler.java:1136)
Information:java:   at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:922)
Information:java:   at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.lambda$doCall$0(JavacTaskImpl.java:104)
Information:java:   at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.handleExceptions(JavacTaskImpl.java:147)
Information:java:   at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:100)
Information:java:   at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:94)
Information:java:   at org.jetbrains.jps.javac.JavacMain.compile(JavacMain.java:195)
Information:java:   at org.jetbrains.jps.incremental.java.JavaBuilder.compileJava(JavaBuilder.java:460)
Information:java:   at org.jetbrains.jps.incremental.java.JavaBuilder.compile(JavaBuilder.java:330)
Information:java:   at org.jetbrains.jps.incremental.java.JavaBuilder.doBuild(JavaBuilder.java:255)
Information:java:   at org.jetbrains.jps.incremental.java.JavaBuilder.build(JavaBuilder.java:213)
Information:java:   at org.jetbrains.jps.incremental.IncProjectBuilder.runModuleLevelBuilders(IncProjectBuilder.java:1324)
Information:java:   at org.jetbrains.jps.incremental.IncProjectBuilder.runBuildersForChunk(IncProjectBuilder.java:1004)
Information:java:   at org.jetbrains.jps.incremental.IncProjectBuilder.buildTargetsChunk(IncProjectBuilder.java:1071)
Information:java:   at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunkIfAffected(IncProjectBuilder.java:965)
Information:java:   at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunks(IncProjectBuilder.java:794)
Information:java:   at org.jetbrains.jps.incremental.IncProjectBuilder.runBuild(IncProjectBuilder.java:376)
Information:java:   at org.jetbrains.jps.incremental.IncProjectBuilder.build(IncProjectBuilder.java:178)
Information:java:   at org.jetbrains.jps.cmdline.BuildRunner.runBuild(BuildRunner.java:139)
Information:java:   at org.jetbrains.jps.cmdline.BuildSession.runBuild(BuildSession.java:288)
Information:java:   at org.jetbrains.jps.cmdline.BuildSession.run(BuildSession.java:121)
Information:java:   at org.jetbrains.jps.cmdline.BuildMain$MyMessageHandler.lambda$channelRead0$0(BuildMain.java:228)
Information:java:   at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
Information:java:   at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
Information:java:   at java.base/java.lang.Thread.run(Thread.java:834)
Information:java: Caused by: java.lang.IllegalArgumentException: plexus.container.default: Invalid module name: 'default' is not a Java identifier
Information:java:   at java.base/jdk.internal.module.Checks.requireModuleName(Checks.java:59)
Information:java:   at java.base/java.lang.module.ModuleDescriptor$Builder.<init>(ModuleDescriptor.java:1550)
Information:java:   at java.base/java.lang.module.ModuleDescriptor.newAutomaticModule(ModuleDescriptor.java:2438)
Information:java:   at java.base/jdk.internal.module.ModulePath.deriveModuleDescriptor(ModulePath.java:507)
Information:java:   at java.base/jdk.internal.module.ModulePath.readJar(ModulePath.java:643)
Information:java:   ... 49 more
Information:java: Errors occurred while compiling module 'some-api'
Information:javac 11 was used to compile java sources
Information:2019-08-09 16:05 - Build completed with 1 error and 0 warnings in 3 s 735 ms
Error:java: Compilation failed: internal java compiler error

Maybe something similar as #573

I confirm this issue

IDEA Version: 2019.2
JDK Version: 11.0.3
OS : Linux 
Lombok Dependency Version: 1.18.8

I also confirm this problem on Windows 10.

IDEA Version: 2019.2.1
JDK Version: 12.0.2
OS Type & Version: Windows 10
Lombok Plugin Version: 0.26.2-2019.2
Lombok Dependency Version: 1.18.8

Immagine

Please check this workaround from: https://medium.com/@Leejjon_net/youll-have-this-problems-when-you-add-lombok-to-a-modular-java-11-micro-service-832f55911bc5

Add this dependeny to your project:

<dependency>
    <groupId>org.mapstruct</groupId>
    <artifactId>mapstruct-processor</artifactId>
    <version>1.3.0.Final</version>
</dependency>

@mplushnikov
I have already tried with adding mapstruct-processor (first comment) but then it crashes with missing plexus container dependency. After adding plexus container dependency ... it crashes with "Unable to derive module descriptor".

@matejsp
It looks like you added everything to annotationProcessorPaths.
Try to add mapstruct-processor to dependencies of your project.

I have also tried with the mapstruct as a dependency. I am attaching the example project.
It is working in 2019.1.4 but it's crashing the compiler in 2019.2.1.

The workaround is for the command line maven. Command line is working as excepted.

testbug.tar.gz

@matejsp Are you using default installation of IntelliJ? Can you please compare with "2019.2.1 for macOS with bundled JBR 8 (dmg)" from https://www.jetbrains.com/idea/download/other.html ?

Yes i am using default 2019.2.1 (now with JBR 11 by default).
I have just tried with JBR 8 and as I assumed it has the same problem (compiler used is 11 even if ide is running as java 8).

It seems that latest version of IntelliJ is very broken (https://youtrack.jetbrains.com/issue/IDEA-200481).

Perhaps it was not expressed enough that the problem occurs only when using jigsaw modules (module-info.java). We are using them for our API. But you can see that in tar.gz example project that I attached earlier.

@matejsp Thank you for clarification! Also big thanks for creating an issue on Yourtrack https://youtrack.jetbrains.com/issue/IDEA-220430

Workaround from YourTrack which worked for me: edit IDEA's compiler.xml, replace <processorPath useClasspath="false"> with <processorPath useClasspath="true">. I use IDEA 2019.3 EAP.

Edite: I have also added following dependency to all my modules:

        <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct-processor</artifactId>
            <version>1.2.0.Final</version>
            <scope>provided</scope>
        </dependency>

Hello,
I had the same problem with java (AdoptOpenJDK) 11.0.4.11-hotspot, IntelliJ 2019.2.3, Lombok 1.18.10 and lombok-plugin (0.26.2-2019.2).

For a while, I manage by choosing either building with IntelliJ or compiling with Maven. I have the 'lombok' and 'mapstruct-processor' dependencies and switch from one to the other, I have to add or remove from the maven compiler configuration the following the 'annotationProcessorPaths':

<annotationProcessorPaths> 
    <path>
         <groupId>org.projectlombok</groupId>
         <artifactId>lombok</artifactId>
         <version>1.18.10</version>
     </path>
 </annotationProcessorPaths>

This morning I made a mistake in my maven compiler configuration and now building with Intellij and compiling with maven works with the same configuration. Here is the mistake I made : instead of using the tag <path> I used <dependency> like this :

<annotationProcessorPaths> 
    <dependency>
         <groupId>org.projectlombok</groupId>
         <artifactId>lombok</artifactId>
         <version>1.18.10</version>
     </dependency>
 </annotationProcessorPaths>

I think that maven does not care what is the enclosing tag (you could use <abcdef> instead of <dependency>) but IntelliJ does.

Hope it helps someone.

Maven does care! But maven can do correct auto detection for annotation processors from dependencies. For maven you can just omit the whole annotationProcessorPaths section.
It used to work in Intelij, but it is broken now.

Well for me the situation is this :

  • without annotationProcessorPaths section : mvn compile fails, IntelliJ build succeeds
  • with correct annotationProcessorPaths section : mvn compile succeeds, IntelliJ build fails
  • with mistake in annotationProcessorPaths section : mvn compile succeeds, IntelliJ build succeeds

Same exception with 2019.3
Module lombok does not read a module that exports org.mapstruct.ap.spi

It was "fixed"/workaround in 2019.3 using "--processor-module-path compiler option (for Java 9 and later)".

Read more:
https://blog.jetbrains.com/idea/2019/10/intellij-idea-2019-2-4-is-out/
https://youtrack.jetbrains.com/issue/IDEA-220430

Was this page helpful?
0 / 5 - 0 ratings