访问项目lombok注释方法时,Maven构建无法找到符号,

我第一次使用项目lombok并且我在运行构建时通过maven编译项目时遇到问题我收到错误,其中调用带有项目lombok注释的方法被调用。

这是带注释的参数:

private @Getter @Setter String paymentNonce = null; 

例如,在这一行中,maven打破了构建:

 if (!StringUtilities.isNullOrEmpty(getPaymentNonce())) { 

这是我的maven依赖

  org.projectlombok lombok 1.16.4  

maven错误:

 [INFO] Compiling 158 source files to C:\java\repos\luna\cloudflow\cloudflow-ejb\target\classes [INFO] ------------------------------------------------------------- [ERROR] COMPILATION ERROR : [INFO] ------------------------------------------------------------- [ERROR] \java\repos\luna\cloudflow\cloudflow-ejb\src\main\java\si\arctur\controller\PaymentProcessor.java:[94,38] error: cannot find symbol [ERROR] \java\repos\luna\cloudflow\cloudflow-ejb\src\main\java\si\arctur\controller\PaymentProcessor.java:[97,106] error: cannot find symbol [ERROR] \java\repos\luna\cloudflow\cloudflow-ejb\src\main\java\si\arctur\controller\PaymentProcessor.java:[142,2] error: cannot find symbol [ERROR] \java\repos\luna\cloudflow\cloudflow-ejb\src\main\java\si\arctur\controller\ShoppingCart.java:[27,6] error: cannot find symbol [ERROR] \java\repos\luna\cloudflow\cloudflow-ejb\src\main\java\si\arctur\controller\ShoppingCart.java:[32,75] error: cannot find symbol ..... 

我正在使用java 8

有使用maven-compiler-plugin v.2.3.2的相同问题更新版本达3.5后问题消失了

  org.apache.maven.plugins maven-compiler-plugin 3.5  ...   

希望这可以帮助

我已经将lombok降级为1.14.8这个版本适用于maven build,我还没有找到为什么1.16版本没有工作:(

简而言之,将maven-compiler-plugin升级到2.4 ,或者将lombok降级到1.14.*以下1.14.*

似乎2.4以下的maven-compiler-plugin不支持名称为$ javax.annotation.processing.Processor

更新:您可以将maven-compiler-plugin配置为fork ,或将plexus-compiler-javac更新为1.8.6 。 ( maven-compiler-plugin 2.3.2需要1.8.1需要1.8.6

1.16ShadowClassLoader使用ShadowClassLoader ,它阻止了ShadowClassLoader内部类的IDE升级。 但是,如果类加载器是org.codehaus.plexus.compiler.javac.IsolatedClassLoader ,则它不使用org.codehaus.plexus.compiler.javac.IsolatedClassLoader 。 (我不知道为什么lombok家伙使用硬代码解决其他问题可能plexus-compiler-javac 。)

maven-compiler-plugin 2.4 ,或者更确切地说, plexus-compiler-javac 1.8.6 ,不使用org.codehaus.plexus.compiler.javac.IsolatedClassLoader ,所以它再次工作。

如果你在静态类中使用lombok注释,那么你将不得不提到类的全名,即。 而不是@Data@lombok.Data 。 这对我有用。

如果您使用与Lombok相关的静态方法(主要是@Builder)和静态导入,您可能会遇到类似的问题(即使在代码的其他部分!)。

有一个公开的问题: https : //github.com/rzwitserloot/lombok/issues/979

目前的解决方法是不使用静态导入,例如更改

 import static my.org.Foo.FooBuilder ... FooBuilder builder = Foo.builder(); 

至:

 Foo.FooBuilder builder = Foo.builder(); // note >>Foo.< 

我的解决方案是使用lombok包名称为注释添加前缀。

 @lombok.Builder @lombok.experimental.Accessors(prefix = "m", chain = true) 

而不是

 @Builder @Accessors(prefix = "m", chain = true) 

我实际上能够通过这里发布的答案来解决这个问题:

MapStruct和Lombok无法收集

基本上我不得不将lombok添加到maven-compiler-plugin

可能是你在java编译(javac)中使用-processor 指定了-proc:none或显式指定的注释处理器吗?

在我的情况下,它是通过升级JDK解决的(是1.8.0_66,现在是1.8.0_92)

尝试在依赖项中为“lombok”模块指定参数。我遇到了同样的问题并通过这项工作解决了这个问题。