247 votes

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

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

J'ai installé Plugin tiers pour IDEA et cela semble fonctionner correctement car IDEA voit toutes les méthodes/champs autogénérés.

J'ai donc une classe qui utilise Slf4j. Je l'ai annotée comme ceci

import lombok.extern.slf4j.Slf4j;

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

Mais quand je construis mon projet, le compilateur crache : cannot find symbol variable log .

Pouvez-vous me dire ce que j'ai manqué ici ?

Mise à jour : Il s'avère que c'est le processus d'annotation RequestFactory qui é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 ?

Mise à jour2 : Peut-être que ce n'est pas quelque chose que les lecteurs veulent entendre mais j'ai fini par passer à Scala .

0 votes

Les erreurs apparaissent même sans le plugin. Je ne suis pas en mesure d'exécuter les tests d'un projet si Lombok figure dans mes dépendances pom.xml.

0 votes

Il y a une autre réponse stackoverflow.com/a/63632563/5410940

471voto

user2021572 Points 371

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

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

Pour IDEA 2016.2 :

Préférences... > Construction, exécution, déploiement > Compilateur > Processeurs d'annotation

Après l'activation, exécutez Construire -> Reconstruire le projet pour faire reconnaître les annotations et éliminer les erreurs.


Pour IDEA 2019.2.1, selon la façon dont le projet est configuré, 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

0 votes

J'ai dû arrêter mon Win10 pour un problème de freeze (crash du pilote) et IntelliJ a été ouvert. Au redémarrage, je suppose que des 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. "Canno't find symbol" au moment de la construction. J'ai lutté un peu pour trouver l'origine du problème.

2 votes

N'oubliez pas de définir le processeur d'annotation : lombok.launch.AnnotationProcessorHider$AnnotationProcessor pour maven-compiler-plugin et Idea (Settings -> Compiler -> Annotation Processors).

3 votes

Cela ne fonctionne pas pour moi en 2016.2. Projet web Maven. La seule chose qui a fonctionné est l'installation du plugin lombok.

74voto

greperror Points 2278

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 de l'onglet les deux endroits disponible.

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

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

2 votes

J'ai dû le faire même avec la dernière version d'intellij 15.0.2.

1 votes

Toujours présent dans la 15.0.4. J'ai également dû mettre à jour la version Lambok et changer le compilateur Java pour JAVAC. Puis faire une reconstruction du projet

0 votes

Il faut encore le faire dans IntelliJ 2016.1.3 :) Il faut paramétrer les 2 processeurs d'annotation. Une telle douleur quand vous l'oubliez !

70voto

CodeShadow Points 11

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

Activez d'abord les processeurs d'annotation et essayez. Cela peut fonctionner ou non. enter image description here

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

enter image description here

4 votes

Merci. J'ai eu le même problème. J'ai oublié d'installer le plugin avant de définir la configuration de l'annotation :)

45voto

  1. Assurez-vous qu'il est ajouté correctement à 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 l'IDE (IntellijIdea), je ne sais pas s'il existe quelque chose de semblable pour d'autres IDE comme Eclipse.

2 votes

Ça, ça, et un millier de fois ça. Merci, j'étais coincé pendant une heure

1 votes

Oui, vous avez raison, nous devrions d'abord vérifier la configuration de construction, puis les paramètres de l'IDE. merci beaucoup !

0 votes

C'est la seule chose qui a vraiment marché ! Pourquoi il n'y a que 13 likes ? !

18voto

Valeriy K. Points 79

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

compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok:1.18.8'

1 votes

Cela a fonctionné pour moi. J'utilise Kotlin DSL et mon code est comme ceci : dependencies { compileOnly("org.projectlombok:lombok:1.18.8") annotationProcessor("org.projectlombok:lombok:1.18.8") ... }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X