web-dev-qa-db-fra.com

IntelliJ IDEA ne peut pas voir le code généré par Lombok

J'ai un projet basé sur Gradle qui utilise Lombok. J'ai importé ce projet dans IntelliJ IDEA 14.1 (à l'aide de la méthode d'importation Import External Model). Je peux exécuter les tests unitaires JUnit4 sans problème dans Gradle, mais IntelliJ semble avoir du mal à voir les Getters générés par Lombok. Cela m'empêche d'exécuter les tests dans IDEA. 

Pour m'assurer que ce n'était pas un problème de configuration, j'ai créé un projet très simple et confirmé que le même problème se produit dans le projet test simple.

Mes versions: Gradle: gradle-2.3-all via Gradle wrapper
IDÉE INTELLIGENT: IU-141.713
Lombok Plugin: 0.9.2

Qu'est-ce que j'oublie ici?

Mise à jour Par ne peut pas voir Je ne veux pas dire physiquement invisible. Je veux dire ceci:

/home/meeee/workspace/junit-lombok-idea/lib/src/main/Java/com/example/jumbokea/Main.Java
Error:(10, 11) Java: cannot find symbol
  symbol:   method setIntField(int)
  location: variable sc of type com.example.jumbokea.SomeClass
Error:(12, 41) Java: cannot find symbol
  symbol:   method getIntField()
  location: variable sc of type com.example.jumbokea.SomeClass
Error:(14, 33) Java: constructor AnotherClass in class com.example.jumbokea.AnotherClass cannot be applied to given types;
  required: no arguments
  found: float,com.example.jumbokea.SomeClass
  reason: actual and formal argument lists differ in length
Error:(16, 46) Java: cannot find symbol
  symbol:   method getSomeFloat()
  location: variable ac of type com.example.jumbokea.AnotherClass
Error:(17, 43) Java: cannot find symbol
  symbol:   method getSomeClass()
  location: variable ac of type com.example.jumbokea.AnotherClass

Les classes décompilées montrent les getters et les setters, mais je reçois ces erreurs lorsque je demande à IntelliJ d'exécuter l'application ou les tests unitaires.

Getters and setters are there, but not there???

37
copolii

Vous devez activer le préprocesseur d'annotation . Voir la documentation ici .

De plus, vous devriez installer le plugin Lombok si ce n’est déjà fait

65
mh-dev

J'ai réussi à résoudre ce problème en procédant comme suit:

  • Installer le plugin IDEA Lombok
  • Activer le traitement des annotations voir la documentation
  • Installez la dernière version de Maven sur votre système et configurez IntelliJ pour l’utiliser (par opposition à celle fournie) voir la documentation
7
Samantha Catania

Dans mon cas, le problème est survenu après la mise à jour de IntelliJ via Toolbox.

Le drapeau "Activer le traitement des annotations" a été désactivé (malgré l'importation des paramètres de la version précédente d'IntelliJ), je l'ai donc activé . Cela n'a pas résolu le problème après le redémarrage, nettoyage, génération.

Cependant, la réintégration du plugin Lombok a aidé!

EDIT: Apparemment, c’est le problème de compatibilité du plugin Lombok avec IntelliJ 2018.1, une mise à niveau du plugin à la version 0.17 est requise pour les utilisateurs d’IntelliJ. 

Extrait du changelog du plugin Lombok:

Le plugin de support Lombok a été mis à jour vers la v0.17: - Corrigé (# 465): compatibilité du plug-in avec IntelliJ 2018.1

3
logrusso

On peut le voir dans le dossier de construction.

enter image description here

3
JiHong Jang

Après avoir activé le processeur d'annotation et installé le plug-in Lombok, si vous obtenez toujours "erreur de symbole introuvable" sur la méthode générée par Lombok, essayez de vérifier la configuration de la gradation, qui se trouve dans 

Préférence -> Construction, Exécution, Déploiement -> Graduer,

si vous utilisez la distribution de dégradés locale, remplacez-le par utilisez le wrapper de dégradé par défaut .

J'ai eu cette erreur lorsque le wrapper de niveaux de mon projet est 4.10.2 mais que ma version de gradle locale est la version 5.1.1 et que je résous le problème après l'avoir modifiée pour utiliser le wrapper de niveaux par défaut.

0
Lindsey Zhang

Dans le cas de Lombok, IntelliJ vous permet de rechercher des utilisations de variable, ce qui inclut également les accesseurs et les setters. Il suffit de cliquer sur le nom de la variable et option/alt + f7.

Cela fonctionne dans Intellij 2016 et le plugin Lombok 0.13.16. Je ne suis pas sûr des anciennes versions.

0
wst

Comme indiqué dans l'autre réponse, installez le plug-in Lombok et activez le processeur d'annotation. Appuyez deux fois sur SHIFT dans IntelliJ et tapez Enable annotation processing dans le champ de recherche. Ensuite, cochez la case et redémarrez l'IDE. 

 enter image description here

 enter image description here

0
Arefe