当我创建一个包含一个或多个字段的新Java类并将@AllArgsConstructor
注释从lombok附加到它时,我收到此消息
Error:(9, 1) error: cannot find symbol class ConstructorProperties
。通过使用此配置创建一个新的空Android项目,我能够重现这一点。
班级(从未使用或实例化)
@lombok.AllArgsConstructor
public class Model {
int foo;
String bar;
}
的build.gradle:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
provided 'org.projectlombok:lombok:1.14.8'
}
来自lombok的 @Getter
和@Setter
不会导致任何问题,即使gradle没有提及@NoArgsConstructor
,如果没有字段,AllArgsConstructor
也是如此。< / p>
这是来自Lombok的错误还是这个错误位于屏幕前方?
答案 0 :(得分:47)
Lombok默认为所有生成的构造函数生成@ConstructorProperties
。在Android上,该注释不可用。如documentation中所述,可以通过为每个@XxxArgsConstructor指定suppressConstructorProperties=true
或在高级lombok.config
文件中使用以下行来抑制生成:
lombok.anyConstructor.suppressConstructorProperties = true
披露:我是龙目岛开发者
答案 1 :(得分:27)
您需要在AllArgsConstructors中添加抑制。如果您不想添加新的配置文件,只需执行以下操作:
@AllArgsConstructor(suppressConstructorProperties = true)
披露:我不是龙目岛的开发者:D
答案 2 :(得分:0)
另外:
如果你在Android项目中定位Java 8(例如使用retrolambda),则不会出现此错误。
答案 3 :(得分:0)
@AllArgsConstructor(suppressConstructorProperties = true)
解决方案不再有效了。如果你试试这个,你会得到以下结果:
不再支持此弃用功能。去掉它;您可以 用。创建一个lombok.config文件 &#39; lombok.anyConstructor.suppressConstructorProperties = true&#39;。
工作解决方案是将lombok.anyConstructor.suppressConstructorProperties = true
添加到lombok.config
文件。
答案 4 :(得分:0)
更新Android Studio后我遇到了同样的问题。
包括被接受者在内的其他答案都没有帮助我。
最后我将lombok版本更新为1.16.20
(今天的最新版本),错误消失了。
希望能为某人节省时间。
答案 5 :(得分:0)
Lombok现在不支持注释preventConstructorProperties。如果尝试删除(suppressConstructorProperties = true),则会出现以下错误:
Error:(9, 1) error: cannot find symbol class ConstructorProperties
以下是解决此问题的步骤: 1.从对象中删除(suppressConstructorProperties = true)。 2.转到项目级别目录。在您的应用中,并创建一个lombok.config文件。 3.将以下代码粘贴到配置文件中。
config.stopBubbling = true
lombok.addGeneratedAnnotation = false
lombok.accessors.chain = false
lombok.anyConstructor.suppressConstructorProperties = true