Impossible de compiler le projet lorsque j'utilise Lombok sous IntelliJ IDEA

202

J'essaie d'utiliser Lombok dans mon projet que je développe en utilisant IntelliJ IDEA 11.

J'ai installé un plugin tiers pour IDEA et cela semble bien fonctionner car IDEA voit toutes les méthodes / champs générés automatiquement.

J'ai donc une classe qui utilise Slf4j. Je l'ai annoté comme ça

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class TestClass
{
    public TestClass()
    {
        log.info("Hello!");
    }
}

Mais quand je bâtirai mon compilateur projet tournebroches: cannot find symbol variable log.

Pourriez-vous me dire ce qui me manque ici?

Mise à jour: il s'est avéré que son processus d'annotation RequestFactory échoue.

input files: {com.zasutki.courierApp.server.TestServlet, com.mine.courierApp.server.model.DatastoreObject}

annotations: [javax.inject.Singleton, javax.inject.Inject, lombok.Getter, lombok.Setter, com.googlecode.objectify.annotation.Id, com.googlecode.objectify.annotation.OnSave]

Processor com.google.web.bindery.requestfactory.apt.RfValidator matches [lombok.Getter, com.googlecode.objectify.annotation.Id, javax.inject.Inject, lombok.Setter, com.googlecode.objectify.annotation.OnSave, javax.inject.Singleton] and returns false.

cannot find symbol variable log

Des idées sur les solutions de contournement?

Update2: Ce n'est peut-être pas quelque chose que les lecteurs veulent entendre, mais j'ai fini par passer à Scala .

expert
la source
Des erreurs apparaissent même sans le plugin. Je ne suis pas en mesure d'exécuter les tests d'un projet si Lombok est dans mes dépendances pom.xml.
Nowaker
1
Les lecteurs préféreraient en fait entendre que vous êtes passé à Eclipse.
Simeon Leyzerzon
1
Les lecteurs viennent ici pour trouver des solutions au problème actuel, faire fonctionner IntelliJ avec lombok.
Florian F

Réponses:

412

Je l'ai corrigé dans IDEA 12 en cochant la case Enable annotation processing:

Paramètres -> Compilateur -> Processeurs d'annotation

Pour IDEA 2016.2:

Préférences ...> Build, Execution, Deployment> Compiler> Annotation Processors

Après l'activation, exécutez Build -> Rebuild Project pour que les annotations soient reconnues et éliminent les erreurs.


Pour IDEA 2019.2.1, selon la configuration du projet, l'installation du plugin Project Lombok peut ne pas être suffisante. Voici une autre façon d'utiliser Project Lombok avec IntelliJ IDEA:

  1. Visitez https://projectlombok.org/download
  2. Téléchargez le fichier JAR dans le répertoire lib du projet (par exemple, $HOME/dev/java/project/libs).
  3. Démarrez l'IDE.
  4. Cliquez sur Fichier 🠖 Paramètres .
  5. Développez Build, Execution, Deployment 🠖 Compiler 🠖 Annotation Processors .
  6. Assurez-vous que l' option Activer le traitement des annotations est cochée.
  7. Assurez-vous que Store génère des sources par rapport à est sélectionné en fonction des paramètres du module du projet (si le répertoire de sortie du module ne fonctionne pas, revenez et essayez l'autre paramètre).
  8. Cliquez sur Appliquer .
  9. Cliquez sur Plugins .
  10. Cliquez sur Marketplace .
  11. Définissez le champ de recherche sur: lombok
  12. Installez Lombok .
  13. Cliquez OK .
  14. Redémarrez l'IDE si vous y êtes invité.
  15. Cliquez sur Fichier Settings Paramètres du projet .
  16. Sélectionnez Bibliothèques .
  17. Cliquez sur le symbole + pour ajouter une nouvelle bibliothèque de projets (ou appuyez sur Alt+ Insert).
  18. Sélectionnez Java .
  19. Définissez le chemin vers: $HOME/dev/java/project/libs/lombok.jar
  20. Cliquez OK .
  21. Sélectionnez les modules à appliquer.
  22. Cliquez OK .
  23. En option, renommer lombokà Project Lombok 1.18.8.
  24. Cliquez OK .

Le projet peut désormais importer à partir du lombokpackage et utiliser les annotations Project Lombok (par exemple, lombok.Setteret lombok.Getter).

user2021572
la source
J'ai dû arrêter mon Win10 pour un problème de gel (crash du pilote) et IntelliJ a été ouvert. Au redémarrage, je suppose que les fichiers d'idées dans mon répertoire de projet ont été modifiés (workspace.xml) et après cela, je n'ai pas pu générer mes méthodes getters / setters via lombok. "Impossible de trouver le symbole" au moment de la construction. J'ai lutté un peu pour repérer l'origine du problème.
Alex
2
N'oubliez pas de définir le processeur d'annotation: lombok.launch.AnnotationProcessorHider $ AnnotationProcessor pour maven-compiler-plugin et Idea (Paramètres -> Compilateur -> Processeurs d'annotation)
Jan Kubovy
3
Cela ne fonctionne pas pour moi en 2016.2. Projet Web Maven. La seule chose qui a fonctionné a été d'installer le plugin lombok.
maksimov
Idée 16.2.2 + gradle + plugin lombok installé. Je pourrais exécuter le projet sans cela lors de l'utilisation du script d'exécution gradle (d'après l'idée). Si je voulais exécuter directement (car c'est le seul moyen que je connaisse pour faire fonctionner le code de hotswap), je devais activer le traitement des annotations. Je suppose que l'idée ne configure pas automatiquement le projet et que les annotations ne sont pas traitées malgré le plugin?
Neikius
A travaillé pour moi dans IDEA 2017.01. L'installation de Lombok a fonctionné pour Intellisense, mais pas pour la compilation jusqu'à ce que le processeur d'annotation soit activé.
lreeder
73

L'activation du traitement des annotations le fera fonctionner

Mais si vous êtes sur un Mac , assurez-vous d'activer le traitement des annotations (cochez la case) à partir des deux emplacements disponibles.

1.) Intellij Idea -> Préférences -> Compilateur -> Processeurs d'annotation

2.) Fichier -> Autres paramètres -> Paramètres par défaut -> Compilateur -> Processeurs d'annotation

greperror
la source
2
Il fallait encore le faire même avec la dernière version d'intellij 15.0.2
BeepDog
1
Toujours présent dans 15.0.4. J'ai également dû mettre à jour la version Lambok vers la dernière et changer le compilateur Java en JAVAC. Faites ensuite une reconstruction du projet
Srikanta
Encore à faire dans IntelliJ 2016.1.3 :) Vous devez définir les 2 processeurs d'annotation. Quelle douleur quand on l'oublie!
Ray Hunter
Toujours à faire dans IntelliJ 2016.3 :)
Sukesh Kotian
même en activant dans les deux endroits, IntelliJ 2016.3.2 ne parvient toujours pas à compiler avec Lombok 1.16.12 :(
arcuri82
56

Représentation graphique de la résolution de ce problème.

Activez d'abord les processeurs d'annotation et essayez. Cela peut ou peut ne pas fonctionner. entrez la description de l'image ici

Après cela, vous pouvez installer le plugin lombok à partir d'intellij, (après l'installation, Intellij redémarrera pour activer le plugin, alors assurez-vous de sauvegarder votre travail. (Intellij enregistre toutes les modifications avant de redémarrer, juste pour être sûr).) ) capture d'écran ci-dessous:

entrez la description de l'image ici

CodeShadow
la source
3
merci .. J'ai le même problème. J'ai oublié d'installer le plugin avant de définir la configuration d'annotation :)
TYL
19
  1. Assurez-vous qu'il est correctement ajouté à votre projet.

exemple pour Gradle:

 dependencies {
     compileOnly 'org.projectlombok:lombok:1.18.8'
     annotationProcessor 'org.projectlombok:lombok:1.18.8'
     ...
 }
  1. Installez le plugin Lombok pour votre IDE
  2. Cochez la case "Activer le traitement des annotations" dans IDE (IntellijIdea), ne savez pas s'il existe quelque chose comme ça pour d'autres IDE comme Eclipse.
Yevhenii Tsybaiev
la source
1
ceci, ceci et mille fois cela. Merci, j'ai été bloqué pendant une heure
ch1ll
1
oui, vous avez raison, nous devons d'abord vérifier la configuration de la construction, puis le paramètre IDE. merci beaucoup!
Eric Tan
C'est la seule chose qui a vraiment fonctionné! Pourquoi il n'a que 13 likes?!
doctorram
Seule solution qui a fonctionné pour moi: D merci !!
Bianca
9

Juste pour référence en utilisant IntelliJ 2018.3 , j'ai résolu ce problème (en utilisant l' @Dataannotation pour insérer getter/setter) en suivant les trois étapes:

  1. Fichier -> Paramètres -> Génération, exécution, déploiement -> Processeurs d'annotation -> Activer le traitement des annotations;

entrez la description de l'image ici

N'oubliez pas d' appliquer le changement.

  1. Installez le plugin lombok dans la même boîte de dialogue de configuration;

entrez la description de l'image ici

  1. Cela semble suffisant pour le moment, il nécessite de redémarrer IntelliJ puis de reconstruire votre projet.

Meilleurs vœux :)

Hearen
la source
Avez-vous eu Maven ou Gradle? J'ai un problème pour que lombok fonctionne pour un projet multi-modules. Je reçois toujours l'erreur: Error:java: Annotation processing is not supported for module cycles. Please ensure that all modules from cycle [module-core,module-utils] are excluded from annotation processing
0x01Brain
@ 0x01Brain Je me sers maven à ce moment - là, mais maintenant en utilisant à la place gradle. Quant à votre question, j'espère que vous pourrez commencer une nouvelle question spécifique pour décrire les détails et il y a beaucoup d'experts là-bas vous aideront;)
Hearen
tant pis je l'ai eu à compiler maintenant, merci. J'ai eu des conflits dans les dépendances. Le module-core a été importé dans le module utils et le module utils a été importé dans le module core, ce qui a créé un conflit.
0x01Brain
8

Si vous avez coché ces deux étapes comme suit

  1. Activer les annotations: il s'agit d'une vérification effectuée dans les préférences IntelliJ.
  2. Importation de lombok dans IntelliJ classPath (Préférences -> Plugins)

et toujours obtenir des erreurs, veuillez vérifier le compilateur - s'il s'agit de JAVAC ou ECLIPSE .

Vous pouvez vérifier le compilateur dans Préférences -> Build, Execution, Deployment -> Compiler -> Java Compiler.

Remplacez le compilateur Use par Javac (s'il s'agit d'Eclipse). C'est ce qui a fonctionné pour moi.

Saurabh Saha
la source
8

dans la dernière version de Gradle, vous devez utiliser annotationProcessor:

compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok:1.18.8'
Valeriy K.
la source
7

Comme indiqué ici , citez: "Vous devez activer l'option du compilateur externe et activer les processeurs d'annotation ou désactiver le compilateur externe et désactiver tous les compilateurs d'annotation pour fonctionner avec lombok". Cela a résolu mon problème. Notez que j'ai ajouté le plugin Scala avant de recevoir cette erreur, donc je soupçonne que le plugin a changé certains des paramètres ci-dessus.

Omri Sivan
la source
7

il existe un plugin pour intellij. voir ici: https://projectlombok.org/download.html

mt.uulu
la source
2
Ce plugin peut être installé dans le menu Paramètres / Plugins d'Intellij. Assurez-vous que le dernier plugin est installé. La mise à niveau vers le dernier plugin a fonctionné pour moi.
JasonM1
5

Avez-vous lombok comme dépendance de votre projet? lombok.jar doit se trouver sur le chemin d'accès aux classes lors de la compilation du projet, qui utilise l'une des annotations lombok.

mplushnikov
la source
Il s'est avéré qu'il échoue dans le processeur d'annotation. J'ai mis à jour ma question avec le journal de sortie.
expert
3

j'étais sur Mac

Ceci est ma version IntelliJ IDEA et Mac - IntelliJ IDEA 2017.1.5 Build # IU-171.4694.70 --- Mac OS X 10.12

En plus d'activer le traitement des annotations (cochez la case) à ces 2 endroits.

1.) Intellij IDEA -> Préférences -> Compilateur -> Processeurs d'annotation

.

2.) Fichier -> Autres paramètres -> Paramètres par défaut -> Compilateur -> Processeurs d'annotation

J'ai également dû installer le plugin Lombok pour le faire fonctionner.

3.) Intellij IDEA -> Préférences -> Plugins -> Parcourir les référentiels-> Rechercher "Lombok" -> installer le plugin -> Appliquer et redémarrer IDEA

mec tellement aléatoire
la source
2

Pour ceux d'entre vous qui ont encore des problèmes:

En plus des étapes ci-dessus d'activation des processeurs d'annotation et d'installation du plugin IntelliJ Lombok, j'ai également dû construire -> reconstruire le projet.

JasnaRB
la source
2
J'ai également dû invalider le cache et redémarrer avant qu'Intellij ne cesse de se plaindre.
Hans
2

1, installez le plugin lombok pour IDEA

Intellij Idea -> Préférences -> Plugins -> tapez dans lombok -> Rechercher dans les référentiels -> installer -> redémarrer IDEA

2, plugin config lombok

L'activation du traitement des annotations le fera fonctionner

Mais si vous êtes sur un Mac, assurez-vous d'activer le traitement des annotations aux deux endroits suivants:

Intellij Idea -> Préférences -> Build, Execution, Deployment -> Compiler -> Annotation Processors, cochez la case "Enable annotation processing". Fichier -> Autres paramètres -> Paramètres par défaut -> Génération, exécution, déploiement -> Compilateur -> Processeurs d'annotation, cochez la case "Activer le traitement des annotations".

Bruce
la source
Je ne vois pas les paramètres par défaut dans les autres paramètres d'IntelliJ. Sont-ils toujours présents? J'utilise l'édition Ultimate - version11.03
thenakulchawla
1

Cela n'a pas fonctionné pour moi avec l'une des solutions ci-dessus. J'ai ajouté <scope>provided</scope>à la dépendance dans pom.xml et cela a fonctionné.

<dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.20</version>
        <scope>provided</scope>
    </dependency>
Shreya Mishra
la source
Quelle version d'IntelliJ utilisez-vous? Aussi, quelle version JDK?
realPK
1

J'ai rencontré ce problème après avoir mis à jour IDEA vers 2018.3. J'ai dû mettre à jour tous les plugins existants

Srikanth Reddy
la source
1

Après avoir essayé toutes les suggestions ici, j'ai également trouvé un autre type de solution. Il semble que parfois IDEA ne peut pas obtenir de processeurs à partir du chemin de classe du projet.

Ainsi, dans l' onglet Paramètres des processeurs d'annotation , vous devez spécifier manuellement le chemin du processeur .

Stepan Mozyra
la source
0

J'ai eu un problème similaire lors de la construction avec JDK8, j'ai remis le projet à JDK7 et cela a bien fonctionné. Il pourrait s'agir d'une ancienne version de Lombok qui ne se compile pas sous JDK8.

John Chapman
la source
J'ai également eu le même problème. Essayez de changer la version de Lombok pour qu'IntelliJ télécharge à nouveau la dépendance.
Sanghyun Lee
0

J'ai eu le même problème, donc je vais laisser cela ici pour référence future de mon inconscience.

Lors Alt+Enterde l' @Slf4jannotation, j'ai choisi par erreur une importation non valide. Donc, si le code ne compile pas, assurez-vous d'importer:

import lombok.extern.slf4j.Slf4j;

Sok Pomaranczowy
la source
0

FWIW - Lorsque vous définissez les annotations du compilateur comme décrit ci-dessus, assurez-vous également de vérifier les profils que vous utilisez, tels que "Processeurs d'annotations par défaut Maven".

l8Again
la source
0

Il peut arriver que même si vous l'avez configuré correctement et qu'il soit visible parmi les bibliothèques et dans la liste des dépendances Gradle, IntelliJ ne l'a toujours pas dans le chemin de classe. Ou il est là, mais configuré avec une portée différente (ex: test au lieu de compiler.)

Tout d'abord, assurez-vous que le plugin est installé et que le traitement des annotations est activé, comme indiqué dans d'autres réponses.

Si vous avez encore une annotation non reconnue, placez le curseur dessus, appuyez sur ALT + ENTRÉE (ou OPTION + ENTRÉE) et voyez si vous avez une option de menu Add library: Gragle: org.projectlombok:lombok:VERSION to class path. Si vous pouvez le voir, choisissez celui-ci et cela pourrait résoudre votre problème.

Vous pouvez vérifier la bibliothèque et sa portée dans: Paramètres du projet / modules / onglet Dépendances (recherchez lombok là-dedans)

wst
la source
0

Dans mon cas, j'avais toutes les choses mentionnées ci-dessous en place et cela ne fonctionnait toujours pas.

  1. J'ai installé correctement le plugin lombok
  2. Processeurs d'annotation, également vérifiés.
  3. Mon compilateur Java a été défini sur JAVAC

Pour résoudre mes problèmes, je devais

  1. Mettez à jour lombok vers la dernière version (v0.15) au 7 octobre 2017.
  2. Redémarrez IntelliJ.
  3. Projet de reconstruction.

Voir les captures d'écran sur la mise à jour et la reconstruction du projet ci-dessous.

Comment mettre à jour lombok

Comment reconstruire un projet

Kehinde Adedamola Shittu
la source
0

Vous pouvez résoudre ce problème cannot find symbol variable loglors de l'utilisation de lombok dans IntelliJ IDEA 2017.1.3 en procédant comme suit:

IntelliJ Preferences> Build, Execution, Deployment> Annotation Processors> [Check] Enable annotation processing> Apply

realPK
la source
0

Installez le plug-in ci-dessous et redémarrez l'IDE pour résoudre les erreurs:

File -> Settings -> Plugins-> Browse Repositories -> Lombok Plugin

Activer le processeur d'annotation:

File -> Settings -> Build, Execution, Deployment -> Compiler -> Annotation Processors
File -> Other Settings -> Default Settings -> Compiler -> Annotation Processors
premier postcommentaire
la source
0

J'ai fait face à un problème similaire. Ce qui suit a fonctionné pour moi.

téléchargez (à partir d'ici https://projectlombok.org/download ) et ajoutez le pot dans la structure de votre projet.

Étapes: Fichier -> Structure du projet -> Bibliothèques globales

Monsieur Personne
la source
0

Si les bibliothèques lombok sont définies correctement, comme beaucoup l'ont mentionné ci-dessus, cliquez sur l'annotation qui ne se compilera pas, Alt-Enter, une importation correcte apparaîtra et le code se compilera. - il m'a fallu un certain temps pour le comprendre. Je le mets ici juste au cas où les gens pourraient manquer la simple évidence.

TGU
la source
0

Pour les utilisateurs d'Eclipse sur MacOS, procédez comme suit. Ça a marché pour moi.

  1. Copiez lombok.jar dans le Eclipse.app/Contents/MacOSrépertoire.
  2. Ajoutez -javaagent:lombok.jarà la fin du fichier Eclipse.app/Contents/Eclipse/eclipse.ini.
  3. Redémarrez Eclipse et activez le «Traitement des annotations» dans les propriétés du projet.

référençant cette

Zhongjun 'Mark' Jin
la source
0

En dehors de ce qui est mentionné dans toutes les réponses, je dois ajouter le code ci-dessous dans la configuration pom.xml pour que l'installation propre de mvn fonctionne. Avant d'ajouter ce code, j'obtenais un symbole introuvable pour les getters et les setters.

                    <annotationProcessorPath>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                        <version>1.18.8</version>
                    </annotationProcessorPath>
Vaibhav K
la source
0

Pour moi, ce qui a fonctionné:

  1. J'ai désinstallé le plugin Lombok installé
  2. J'ai coché "Activer le plugin d'annotation"
  3. J'ai sélectionné "Obtenir le processeur à partir du chemin de classe du projet" dans la même page
Sagiruddin Mondal
la source
0

Pour IntelliJ IDEA 2020.1.1, l'activation du plug-in Kotlin a résolu ce problème.

Vova Perebykivskyi
la source