我第一次使用项目lombok并且在运行构建时遇到maven编译项目时遇到问题我收到错误,其中调用了使用项目lombok注释注释的方法。
这是带注释的参数:
private @Getter @Setter String paymentNonce = null;
在这一行中,maven打破了构建:
if (!StringUtilities.isNullOrEmpty(getPaymentNonce())) {
这是我的maven依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.4</version>
</dependency>
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
答案 0 :(得分:31)
使用maven-compiler-plugin v.2.3.2遇到同样的问题 更新版本后,问题消失了
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5</version>
<configuration>
...
</configuration>
</plugin>
希望这有帮助
答案 1 :(得分:8)
我已经将lombok降级为1.14.8这个版本适用于maven build,我还没有找到为什么1.16版本没有工作:(
答案 2 :(得分:4)
我实际上可以通过点击这里发布的答案来解决这个问题:
MapStruct and Lombok not working togather
基本上我必须将lombok
添加到maven-compiler-plugin
<annotationProcessorPaths>
答案 3 :(得分:3)
简而言之,将maven-compiler-plugin
升级为2.4
,或将lombok
降级为1.14.*
以下。
maven-compiler-plugin
以下的2.4
似乎不支持名称为javax.annotation.processing.Processor
的{{1}}。
更新:您可以将$
配置为maven-compiler-plugin
,或将fork
更新为plexus-compiler-javac
。 (1.8.6
maven-compiler-plugin
需要2.3.2
,1.8.1
需要2.4
)
自1.8.6
以来,lombok使用1.16
,这阻止了lombok内部类的IDE升级。但是,如果类加载器为ShadowClassLoader
,则不会使用ShadowClassLoader
。 (我不知道为什么lombok家伙使用硬代码来解决可能与org.codehaus.plexus.compiler.javac.IsolatedClassLoader
相关的其他问题。)
plexus-compiler-javac
maven-compiler-plugin
,或者更确切地说,2.4
plexus-compiler-javac
,不使用1.8.6
,因此它再次有效。
答案 4 :(得分:3)
如果您正在使用与静态导入相关的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.<<FooBuilder; without static import
答案 5 :(得分:3)
我的解决方案是在注释前加上lombok包名。
@lombok.Builder
@lombok.experimental.Accessors(prefix = "m", chain = true)
而不是
@Builder
@Accessors(prefix = "m", chain = true)
答案 6 :(得分:2)
如果你在静态类中使用lombok注释,那么你将不得不提到类的全名,即。代替@Data
到@lombok.Data
。这对我有用。
答案 7 :(得分:0)
在我的情况下,通过升级JDK解决了问题(1.8.0_66,现在是1.8.0_92)
答案 8 :(得分:0)
尝试为&#34; lombok&#34;指定参数依赖关系中的模块。我遇到了同样的问题并通过这项工作解决了这个问题。
答案 9 :(得分:0)
我不知道,但是由于某种原因它解决了我的问题。
我有两个使用@Builder生成构建方法的类。但是一个是正常的,另一个是异常的。我检查了所有内容,似乎还可以。
但是当我运行mvn
来编译我的项目时,错误如下:
找不到符号 方法builder()
import lombok.*;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
class A {
}
import lombok.*;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
class B {
}
A类可以正确编译,但是B类报告上述问题。
我试图替换Lombok JAR的版本,但是即使将版本设置为最新,也不行。
因此,我尝试按我参考的每个类导入Lombok。
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
class B {
}
有效!似乎是个错误。
答案 10 :(得分:0)
对于使用 JDK9 及以上版本的其他用户,您应该在 maven 编译器插件中添加 annotationProcessorPaths
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.16</version>
</path>
</annotationProcessorPaths>