web-dev-qa-db-ja.com

lombokのAllArgsConstructorがAndroid Studioで見つかりません

1つ以上のフィールドを持つ新しいJavaクラスを作成し、ロンボクから_@AllArgsConstructor_アノテーションを添付すると、このメッセージが表示されます。

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

gradleビルドコンソールから。この構成で新しい空の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_は問題を引き起こさず、_@NoArgsConstructor_でさえgradleで言及されていないため、フィールドがない場合はAllArgsConstructorも同様です。

これはロンボクのバグですか、それとも画面の前にあるバグですか?

20
Ohmen

Lombokは、生成されたすべてのコンストラクターに対してデフォルトで@ConstructorPropertiesを生成します。 Androidでは、そのアノテーションは利用できません。 documentation で説明したように、@ XxxArgsConstructorごとにsuppressConstructorProperties=trueを指定するか、高レベルのlombok.configファイルで次の行を使用することにより、生成を抑制することができます。

lombok.anyConstructor.suppressConstructorProperties = true

開示:私はロンボクの開発者です

48
Roel Spilker

AllArgsConstructorsに抑制を追加する必要があります。新しい構成ファイルを追加したくない場合は、次のようにするだけです。

@AllArgsConstructor(suppressConstructorProperties = true)

開示:私はロンボクの開発者ではありません:D

27

Android Studioを更新した後、同じ問題が発生しました。

受け入れられたものを含む他の答えのどれも私を助けませんでした。

最後に、ロンボクバージョンを1.16.20(今日の最新)に更新しましたが、エラーは消えました。

それが誰かの時間を節約することを願っています。

0
Vasily Kabunov

注釈suppressConstructorPropertiesはLombokでサポートされなくなりました。削除しようとすると(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
0
Sumit Saurabh

@AllArgsConstructor(suppressConstructorProperties = true)ソリューションは機能しなくなりました。これを試してみると、次のようになります。

この非推奨の機能はサポートされなくなりました。それを除く; 'lombok.anyConstructor.suppressConstructorProperties = true'を使用してlombok.configファイルを作成できます。

実用的な解決策は、lombok.anyConstructor.suppressConstructorProperties = trueファイルをlombok.configファイルに追加することです。

0

また:

Java 8をAndroidプロジェクトで(たとえばretrolambdaを使用して)ターゲットにすると)このエラーは表示されません。

0
Diolor