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)
希望这可以帮助
小智 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)
我实际上能够通过遵循此处发布的答案来解决此问题:
基本上我必须添加lombok到maven-compiler-plugin <annotationProcessorPaths>
如果您将 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)
我的解决方案是在注释前加上 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)
| 归档时间: |
|
| 查看次数: |
22559 次 |
| 最近记录: |