当我使用javapoet时,是否有任何方法(和意义)使用lombok?
下面是一个例子:
TypeSpec typeSpec = TypeSpec
.classBuilder("MyDtoWithLombok")
.addModifiers(Modifier.PUBLIC)
//.addAnnotation(NoArgsConstructor.class)
//.addAnnotation(AllArgsConstructor.class)
//.addAnnotation(Data.class)
//.addAnnotation(Builder.class)
.addField(...)
.build();
当我尝试添加lombok注解(如->data.class)时,我得到以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: lombok/NoArgsConstructor
...
Caused by: java.lang.ClassNotFoundException: lombok.NoArgsConstructor
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 3 more
1条答案
按热度按时间wdebmtf21#
可能是因为lombok通常被赋予了作用域——您通常不希望它出现在类路径上,因为它应该在编译时被处理和删除。
移除
<scope>provided</scope>
行,或将其更改为compile
. 两者都是等价的,因为compile
是默认值。我个人会明确使用
compile
甚至可能添加一条注解,解释为什么不使用provided
,因为一个普通读者可能会认为这是一个错误,或者尝试将其改为provided
再一次。