182 votes

Construction avec @Slf4j de Lombok et Intellij : Impossible de trouver le journal des symboles

J'ai un projet maven qui se construit sans problème à partir de la ligne de commande. Cependant, lorsque je le construis avec IntelliJ, j'obtiens l'erreur suivante :

java: FileName.java:89: cannot find symbol
symbol  : variable log

Il n'y a pas de journal défini ou importé dans le fichier java, mais il y a une

@Slf4j
final public class FileName {

avant le corps de la classe qui doit définir la classe de journal.

Dans la fenêtre de la structure du projet, les classes pour :

Maven: org.slf4j:jcl-over-slf4j:1.6.1
Maven: org.slf4j:slf4j-api:1.6.6
Maven: org.slf4j:slf4j-log4j12:1.6.6
Maven: org.slf4j:slf4j-simple:1.6.6

sont répertoriés dans les bibliothèques et sont indiqués comme ayant été téléchargés et disponibles.

Vous avez une idée de la raison pour laquelle il est possible de construire avec maven en ligne de commande, mais pas avec IntelliJ, et comment résoudre ce problème ?

225voto

En plus de avoir installé le plugin Lombok assurez-vous également que l'option " Enable annotation processing "est cochée :

Preferences > Compiler > Annotation Processors

Note : à partir d'IntelliJ 2017, l'option " Enable Annotation Processing La case à cocher " " a été déplacée vers :

Settings > Build, Execution, Deployment > Compiler > Annotation Processors

54voto

Il faut suivre l'étape suivante :

Étape 1. Activez le traitement des annotations pour votre projet sous File -> Settings -> Build, Execution, Deployment -> Compiler -> Annotation Processor.

Capture d'écran enter image description here

Étape 2. Installez le plugin lombok dans l'IDE IntelliJ, puis redémarrez l'IDE. Capture d'écran

enter image description here

Étape 3. Ajouter la dépendance dans le fichier build.gradle.

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

Dans le cas où vous utilisez lombok dans les tests, vous devez ajouter :

testCompileOnly 'org.projectlombok:lombok:1.18.12'  
testAnnotationProcessor 'org.projectlombok:lombok:1.18.12'

ou https://developervisits.wordpress.com/2020/09/16/building-with-lomboks-slf4j-and-intellij-cannot-find-symbol-log/

J'espère que cette réponse vous sera utile.

44voto

Ryan Stewart Points 46960

Vraisemblablement, c'est le Lombok @Slf4j que vous utilisez. Vous devez installer le plugin Lombok dans IntelliJ si vous voulez qu'IntelliJ reconnaisse les annotations Lombok. Sinon, à quoi vous attendez-vous si vous essayez d'utiliser un champ qui n'existe pas ?

25voto

Tim Long Points 1052

Dans Intellij version 2016, 2017, activer Préférences -> Compilateur -> Processeurs d'annotation ne fonctionne pas pour moi !

La case à cocher supplémentaire suivante est utile : enter image description here

22voto

Witold Kaczurba Points 2815

2019 :

Obtenez un plugin et vous êtes réglé...

Fichier > Paramètres > Plugins

enter image description here

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