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
も同様です。
これはロンボクのバグですか、それとも画面の前にあるバグですか?
Lombokは、生成されたすべてのコンストラクターに対してデフォルトで@ConstructorProperties
を生成します。 Androidでは、そのアノテーションは利用できません。 documentation で説明したように、@ XxxArgsConstructorごとにsuppressConstructorProperties=true
を指定するか、高レベルのlombok.config
ファイルで次の行を使用することにより、生成を抑制することができます。
lombok.anyConstructor.suppressConstructorProperties = true
開示:私はロンボクの開発者です
AllArgsConstructorsに抑制を追加する必要があります。新しい構成ファイルを追加したくない場合は、次のようにするだけです。
@AllArgsConstructor(suppressConstructorProperties = true)
開示:私はロンボクの開発者ではありません:D
Android Studioを更新した後、同じ問題が発生しました。
受け入れられたものを含む他の答えのどれも私を助けませんでした。
最後に、ロンボクバージョンを1.16.20
(今日の最新)に更新しましたが、エラーは消えました。
それが誰かの時間を節約することを願っています。
注釈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
@AllArgsConstructor(suppressConstructorProperties = true)
ソリューションは機能しなくなりました。これを試してみると、次のようになります。
この非推奨の機能はサポートされなくなりました。それを除く; 'lombok.anyConstructor.suppressConstructorProperties = true'を使用してlombok.configファイルを作成できます。
実用的な解決策は、lombok.anyConstructor.suppressConstructorProperties = true
ファイルをlombok.config
ファイルに追加することです。
また:
Java 8をAndroidプロジェクトで(たとえばretrolambdaを使用して)ターゲットにすると)このエラーは表示されません。