首页 文章

谷歌errorprone java编译器 - maven构建期间的bug:java.lang.NoSuchFieldError:pid

提问于
浏览
3

我已将以下内容添加到pom文件中:

<!-- Source: http://errorprone.info/docs/installation -->
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.3</version>
            <configuration>
                <compilerId>javac-with-errorprone</compilerId>
                <forceJavacCompilerUse>true</forceJavacCompilerUse>
                <!-- maven-compiler-plugin defaults to targeting Java 5, but our javac
                     only supports >=6 -->
                <source>8</source>
                <target>8</target>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>org.codehaus.plexus</groupId>
                    <artifactId>plexus-compiler-javac-errorprone</artifactId>
                    <version>2.5</version>
                </dependency>
                <!-- override plexus-compiler-javac-errorprone's dependency on
                     Error Prone with the latest version -->
                <dependency>
                    <groupId>com.google.errorprone</groupId>
                    <artifactId>error_prone_core</artifactId>
                    <version>2.0.4</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</build>

在maven clean install期间导致:

An annotation processor threw an uncaught exception.
Consult the following stack trace for details.
java.lang.NoSuchFieldError: pid
    at lombok.javac.JavacAST.packageDeclaration(JavacAST.java:107)
    at lombok.javac.JavacAST.<init>(JavacAST.java:81)
    at lombok.javac.JavacTransformer.transform(JavacTransformer.java:67)
    at lombok.javac.apt.Processor.process(Processor.java:250)
    at lombok.core.AnnotationProcessor$JavacDescriptor.process(AnnotationProcessor.java:115)
    at lombok.core.AnnotationProcessor.process(AnnotationProcessor.java:165)
    at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:801)
    at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:713)
    at com.sun.tools.javac.processing.JavacProcessingEnvironment.access$2000(JavacProcessingEnvironment.java:91)
    at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1021)
    at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1129)
    at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1141)
    at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:833)
    at com.sun.tools.javac.main.Main.compile(Main.java:249)
    at com.google.errorprone.ErrorProneCompiler.run(ErrorProneCompiler.java:220)
    at com.google.errorprone.ErrorProneCompiler.run(ErrorProneCompiler.java:158)
    at com.google.errorprone.ErrorProneCompiler.compile(ErrorProneCompiler.java:87)
    at org.codehaus.plexus.compiler.javac.errorprone.JavacCompilerWithErrorProne$CompilerInvoker.compile(JavacCompilerWithErrorProne.java:219)
    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:497)
    at org.codehaus.plexus.compiler.javac.errorprone.JavacCompilerWithErrorProne.performCompile(JavacCompilerWithErrorProne.java:91)
    at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:825)
    at org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:129)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:347)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:154)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:582)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:158)
    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:497)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
[DEBUG] incrementalBuildHelper#afterRebuildExecution
[INFO] ------------------------------------------------------------------------

...

[错误]无法执行目标org.apache.maven.plugins:maven-compiler-plugin:3.3:编译(默认编译)项目核心:编译失败 - > [帮助1] org.apache.maven.lifecycle . LifecycleExecutionException:未能执行目标org.apache.maven.plugins:Maven的编译器插件:3.3:编译(默认编译)项目的核心:在org.apache.maven.lifecycle.internal.MojoExecutor.execute编译失败(MojoExecutor .java:212)org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)at org . 位于org.apache.maven.lifecycle.internal的org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)的apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116) . 在org.apache.maven.lifecycle.internal.LifecycleStarter.execute的builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) (LifecycleStarter.java:120)在org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:347)在org.apache.maven.DefaultMaven.execute(DefaultMaven.java:154)在org.apache.maven.cli . mavenCli.execute(MavenCli.java:582)org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214)org.apache.maven.cli.MavenCli.main(MavenCli.java:158)at sun at.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:497)在org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)在org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)在org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)在org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)引起的:org.apache.maven . plugin.compiler.Compi lationFailureException:org.apache上的org.apache.maven.plu . 编译失败,org.apache.maven.plu . 编译失败,org.apache.maven.plu . 编译失败,编译失败,org.apache.maven.plu . 编译器,编译失败org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)中的.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)... 19更多[错误]

嗯..我刚刚注意到它与lombok相关的AST东西有关 .

Does errorprone and lombok not work well together?

What can I do to resolve this issue?

2 回答

  • 1

    由于编译器,它们确实不能很好地协同工作 .

    Error-prone dev comments (Jun, 26, 2015)

    我们决定将Error Prone固定到特定版本的javac,因为Error Prone依赖于编译器内部,并且支持多个版本的javac很难并且难以验证,因为我们在内部只使用一个版本的javac .

    Lombok dev comment (Oct, 12, 2015)

    我担心Java 9支持不会在几天内修复 .

    看起来所有以2.0开头的errorprone版本都使用javac9,因此无法解决问题,尽管您可以尝试以前版本的errorprone .

  • 3

    我遇到了同样的问题,通过使用Java 8进行编译解决了这个问题(事实证明我的 JAVA_HOME 指向了Java 9版本) .

相关问题