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

sim*_*onC 28 java maven lombok

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

这是带注释的参数:

    private @Getter @Setter String paymentNonce = null;
Run Code Online (Sandbox Code Playgroud)

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

if (!StringUtilities.isNullOrEmpty(getPaymentNonce())) {
Run Code Online (Sandbox Code Playgroud)

这是我的maven依赖

<dependency> 
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.4</version> 
</dependency>
Run Code Online (Sandbox Code Playgroud)

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
.....
Run Code Online (Sandbox Code Playgroud)

我正在使用java 8

小智 32

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

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.5</version>
    <configuration>
        ...
    </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助

  • 此解决方案对`maven-compiler-plugin:3.5.1` 仍然有效。 (2认同)
  • 我已经尝试过版本 `maven-compiler-plugin:3.5.1` 和 `maven-compiler-plugin:3.7.0` 但只有 `maven-compiler-plugin:3.5` 对我来说适用于 Lombok (2认同)

sim*_*onC 8

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


小智 8

对于使用JDK9及以上版本的其他用户,您应该将annotationProcessorPaths添加到maven编译器插件中

<annotationProcessorPaths>
    <path>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.16</version>
    </path>
</annotationProcessorPaths>
Run Code Online (Sandbox Code Playgroud)


Fab*_*ian 7

我实际上能够通过遵循此处发布的答案来解决此问题:

MapStruct和Lombok无法协同工作

基本上我必须添加lombokmaven-compiler-plugin <annotationProcessorPaths>


gil*_*lad 6

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

关于它有一个未解决的问题:https : //github.com/rzwitserloot/lombok/issues/979

当前的解决方法是简单地不使用静态导入,例如更改

import static my.org.Foo.FooBuilder
 ...
FooBuilder builder = Foo.builder();
Run Code Online (Sandbox Code Playgroud)

到:

Foo.FooBuilder builder = Foo.builder(); // note >>Foo.<<FooBuilder; without static import
Run Code Online (Sandbox Code Playgroud)


B. *_*use 6

我的解决方案是在注释前加上 lombok 包名称。

@lombok.Builder
@lombok.experimental.Accessors(prefix = "m", chain = true)
Run Code Online (Sandbox Code Playgroud)

而不是

@Builder
@Accessors(prefix = "m", chain = true)
Run Code Online (Sandbox Code Playgroud)