Android Studio找不到来自lombok的AllArgsConstructor

时间:2015-01-15 17:29:46

标签: java android android-studio lombok

当我创建一个包含一个或多个字段的新Java类并将@AllArgsConstructor注释从lombok附加到它时,我收到此消息

Error:(9, 1) error: cannot find symbol class ConstructorProperties

从Gradle Build控制台上的

。通过使用此配置创建一个新的空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的错误还是这个错误位于屏幕前方?

6 个答案:

答案 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