Lorsque je crée une nouvelle classe Java avec un ou plusieurs champs et que j'attache l'annotation @AllArgsConstructor
de lombok, je reçois ce message.
Error:(9, 1) error: cannot find symbol class ConstructorProperties
à partir de la console Gradle Build. J'ai pu reproduire cela en créant un nouveau projet Android vide avec cette configuration.
La classe (jamais utilisée ou instanciée)
@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'
}
@Getter
et @Setter
de lombok ne posent aucun problème et même le @NoArgsConstructor
n'est pas mentionné par gradle, il en va de même de la AllArgsConstructor
s'il n'y a pas de champs.
Est-ce un bug de Lombok ou ce bug se trouve-t-il devant l'écran?
Lombok génère le @ConstructorProperties
par défaut pour tous les constructeurs générés. Sur Android, cette annotation n'est pas disponible. Comme indiqué dans la documentation , il est possible de supprimer la génération en spécifiant suppressConstructorProperties=true
pour chaque @XxxArgsConstructor ou en utilisant la ligne suivante dans un fichier lombok.config
de haut niveau:
lombok.anyConstructor.suppressConstructorProperties = true
Divulgation: Je suis un développeur de Lombok
Vous devez ajouter une suppression dans vos AllArgsConstructors. Si vous ne voulez pas ajouter un nouveau fichier de configuration, vous pouvez simplement faire ceci:
@AllArgsConstructor(suppressConstructorProperties = true)
Divulgation: Je ne suis pas un développeur de Lombok: D
J'ai eu le même problème après la mise à jour d'Android Studio.
Aucune des autres réponses, y compris celle acceptée, ne m'a aidé.
Enfin, j'ai mis à jour la version de lombok avec 1.16.20
(le plus récent pour aujourd'hui) et l'erreur a disparu.
J'espère que cela fera gagner du temps à quelqu'un.
L'annotation suppressConstructorProperties n'est plus prise en charge par Lombok. Si vous essayez de supprimer (suppressConstructorProperties = true), vous obtiendrez le message d'erreur suivant:
Error:(9, 1) error: cannot find symbol class ConstructorProperties
Voici les étapes à suivre pour résoudre ce problème: 1. Supprimez (suppressConstructorProperties = true) de l'objet. 2. Accédez au répertoire de niveau projet. dans votre application et créez un fichier lombok.config. 3. Collez le code ci-dessous dans le fichier de configuration.
config.stopBubbling = true
lombok.addGeneratedAnnotation = false
lombok.accessors.chain = false
lombok.anyConstructor.suppressConstructorProperties = true
La solution @AllArgsConstructor(suppressConstructorProperties = true)
ne fonctionne plus. Si vous essayez ceci, vous obtenez ce qui suit:
Cette fonctionnalité obsolète n'est plus prise en charge. Le retirer; vous pouvez créer un fichier lombok.config avec 'lombok.anyConstructor.suppressConstructorProperties = true'.
La solution de travail consiste à ajouter lombok.anyConstructor.suppressConstructorProperties = true
au fichier lombok.config
.
Également:
Si vous ciblez Java 8 dans votre projet Android (en utilisant par exemple retrolambda), cette erreur ne s'affiche pas.