J'ai un projet maven qui se construit sans aucun problème depuis la ligne de commande. Cependant, lorsque je le construis avec IntelliJ, j'obtiens l'erreur:
Java: FileName.Java:89: cannot find symbol
symbol : variable log
Il n’existe pas de journal défini ou importé dans le fichier Java, mais il existe un
@Slf4j
final public class FileName {
déclaration devant le corps de la classe qui devrait définir la classe de journal.
Dans la fenêtre de la structure du projet, 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.
Avez-vous une idée de la raison pour laquelle cela fonctionne avec maven via la ligne de commande, mais pas avec IntelliJ et comment résoudre le problème?
En plus d'avoir le plugin Lombok installé (v0.5 pour IntelliJ 12), assurez-vous également que la case "Activer le traitement des annotations" est cochée sous: Préférences -> Compilateur -> Processeurs d'annotation
Vraisemblablement, c'est le Lombok @ Slf4j annotation que vous utilisez. Vous aurez besoin d'installer le plugin Lombok dans IntelliJ si vous voulez qu'IntelliJ reconnaisse les annotations de Lombok. Sinon, qu'attendez-vous si vous essayez d'utiliser un champ qui n'existe pas?
Dans IDEA 13, cela ne semble plus être un problème, il suffit d’installer le plugin Lombok.
Cela a fonctionné pour moi: File -> Settings -> Build, Execution, Deployment -> Compiler -> Annotation Processor
Cochez la case 'activer le traitement des annotations' .Apply
Fermer
Je suis peut-être en train de graver un sujet mort, mais une solution simple consiste à vérifier vos dépendances (pom de Maven par exemple) si vous incluez logback-core et logback-classic .
Slf4j est juste l'interface, vous avez besoin de la mise en œuvre concrète derrière pour fonctionner.
J'ai été trompé deux fois avecIDÉEje me suis trompé, maintenant je suis prêt à partir: D
Je voyais ce problème avec une ancienne version de Lombok lors de la compilation sous JDK8. Remettre le projet à JDK7 a résolu le problème.
Je viens d'installer la dernière version d'idée 2108.1 et j'ai trouvé ce problème après avoir installé le plugin Lombok et redémarré Idea.
Cela n’aura pas été un problème pour OP, mais pour tous ceux qui essaient tout sans succès:
J'ai eu des symptômes similaires. Chaque fois que je construis après un mvn clean
, il ne trouve pas log
, ou getXYZ()
, ou builder()
, ou quoi que ce soit.
[ERROR] symbol: variable log
[ERROR] location: class com.example.MyClass
[ERROR] /Path/To/Some/Java/src/main/com/example/MyClass.Java:[30,38] cannot find symbol
[ERROR] symbol: method builder()
[ERROR] location: class com.example.MyClass
Après avoir lu toutes les réponses que j'ai pu trouver sur les problèmes QueryDSL/JPA/Hibernate/Lombok/IntelliJ/Maven sans succès, j'ai découvert que le coupable était une simple importation statique d'une méthode @Getter
annotée sur un champ statique.
Printemps 1.15.14.RELEASE, mardi 29 mars 2011
@SpringBootApplication
public class BarApplication implements ApplicationContextAware {
@Getter
private static ApplicationContext applicationContext;
// ... start Spring application, and grab hold of ApplicationContext as it comes past
}
import ...
import static BarApplication.getApplicationContext;
@Slf4j
public class IMakeItAllFail {
public IMakeItAllFail() {
log.info("{}", getApplicationContext());
}
}
@Slf4j
public class Foo {
Foo() {
log.info("I fail to compile but I have nothing to do with the other classes!");
}
}
Après avoir essayé toutes ces réponses en vain, un redémarrage dans Windows 10 fonctionne pour moi. Votez-moi au sommet pour exprimer votre colère envers Microsoft. (sans blague)
Après avoir activé les processeurs d'annotation et installé le plugin Lombok, cela ne fonctionnait toujours pas. Nous avons corrigé l'option Idea "Déléguer IDE build à modifier".
Travaillé pour moi !!! Il a également échoué sur CircleCI et Jenkins.
Si vous êtes un utilisateur Gradle, essayez d'ajouter ce qui suit dans vos dépendances:
dependencies {
//Other Dependencies >>
//LOMBOK Dependencies
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testAnnotationProcessor 'org.projectlombok:lombok'
testCompile 'org.projectlombok:lombok'
testImplementation 'org.projectlombok:lombok'
}
Ce qui a été réglé pour moi a été de cocher la case "Utiliser le registre de plugins" dans les paramètres Maven.
Le chemin est: Fichier -> Préférences -> Construire, Exécution, Déploiement -> Construire Outils -> Maven
J'ai essayé presque toutes les réponses mentionnées mais rien n'a fonctionné pour moi. Mon niveau de construction échouait à chaque fois. Je viens de trouver cette solution:
Ajoutez annotationProcessor 'org.projectlombok:lombok'
dans votre build.gradle.
Cela a fonctionné pour moi.