Ich habe ein Maven-Projekt, das ohne Probleme über die Befehlszeile erstellt wird. Wenn ich es jedoch mit IntelliJ erstelle, wird folgende Fehlermeldung angezeigt:
java: FileName.java:89: cannot find symbol
symbol : variable log
In der Java-Datei ist kein Protokoll definiert oder importiert, aber es gibt ein
@Slf4j
final public class FileName {
Anweisung vor dem Klassenkörper, der die Protokollklasse definieren soll.
Im Projektstrukturfenster werden Klassen für:
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
sind unter Bibliotheken aufgeführt und gelten als heruntergeladen und verfügbar.
Irgendeine Idee, warum dies mit maven über die Befehlszeile, aber nicht über IntelliJ erstellt wird und wie das Problem behoben werden kann?
intellij-idea
slf4j
lombok
user1991839
quelle
quelle
Antworten:
Neben mit installiert Lombok Plugin , stellen Sie sicher auch , dass die „
Enable annotation processing
“ Checkbox unter aktiviert ist:Hinweis: Ab IntelliJ 2017 wurde das
Enable Annotation Processing
Kontrollkästchen " " verschoben zu:quelle
Vermutlich ist das die Lombok @ Slf4j- Annotation, die Sie verwenden. Sie müssen das Lombok-Plugin in IntelliJ installieren, wenn IntelliJ Lombok-Anmerkungen erkennen soll. Was erwarten Sie sonst, wenn Sie versuchen, ein nicht vorhandenes Feld zu verwenden?
quelle
Aktivieren Sie in Intellij Version 2016, 2017 Einstellungen aktivieren -> Compiler -> Anmerkungsprozessoren funktioniert bei mir nicht!
Das folgende zusätzliche Kontrollkästchen hilft:
quelle
2019:
Holen Sie sich ein Plugin und Sie sind sortiert ...
Datei> Einstellungen> Plugins
quelle
Ich mag ein totes Thema entwirren, aber eine einfache Lösung besteht darin, Ihre Abhängigkeiten (zum Beispiel Mavens Pom) zu überprüfen, wenn Sie Logback-Core und Logback-Classic einschließen .
Slf4j ist nur die Schnittstelle, Sie benötigen die konkrete Implementierung dahinter, um zu funktionieren.
Ich wurde zweimal mit IDEA ausgetrickst , jetzt kann ich loslegen: D.
quelle
Hat für mich gearbeitet !!! Es schlug auch bei CircleCI und Jenkins fehl.
Wenn Sie ein Gradle-Benutzer sind, fügen Sie Folgendes zu Ihren Abhängigkeiten hinzu:
quelle
In IDEA 13 scheint dies kein Problem mehr zu sein. Sie müssen lediglich das Lombok-Plugin installiert haben.
quelle
Ich habe gerade die neueste Idee Version 2108.1 installiert und dieses Problem gefunden, nachdem ich das Lombok-Plugin installiert und die Idee neu gestartet habe, um es zu beheben.
quelle
Wenn Sie maven verwenden, versuchen Sie, den Lombok-Pfad zur
maven-compiler-plugin
Liste der Anmerkungsprozessoren hinzuzufügen, wie unten gezeigt.Ändern Sie die Version gemäß Ihrer Version von Lombok. Stellen Sie ansonsten sicher, dass Sie Folgendes getan haben
File -> Settings -> Build, Execution, Deployment -> Compiler -> Annotation Processor
. Für mich beideObtain processors from project classpath
undProcessor path
arbeitet. Sie sind sich also nicht sicher, was für Sie funktionieren wird, aber versuchen Sie, was auch immer funktioniert.Und anstatt stundenlang im Dunkeln zu schießen. Es kann hilfreich sein, ein wenig zu lesen, wie Anmerkungsprozessoren funktionieren und vom Compiler verwendet werden. Lesen Sie also weiter unten.
http://hannesdorfmann.com/annotation-processing/annotationprocessing101
quelle
Das hat bei mir funktioniert:
File -> Settings -> Build, Execution, Deployment -> Compiler -> Annotation Processor
Aktivieren Sie "Anmerkungsverarbeitung aktivieren".
Apply
Schließen
quelle
Ich habe fast alle genannten Antworten ausprobiert, aber nichts hat bei mir funktioniert. Mein Gradle Build schlug jedes Mal fehl. Habe gerade diese Lösung gefunden:
Fügen Sie
annotationProcessor 'org.projectlombok:lombok'
in Ihrem build.gradle hinzu.Das hat bei mir funktioniert.
quelle
Das Entfernen der @ Slf4J-Annotation aus der Klasse und das erneute Hinzufügen hat für mich funktioniert.
quelle
1 Meine gradle lombok Abhängigkeiten:
2 Nachdem Sie "Anmerkungen ..." in IDEA (Einstellungen) aktiviert haben und berücksichtigt haben, dass Sie das Lombok-Plugin installiert haben, wurde das gleiche Problem behoben
quelle
Ich habe dieses Problem mit einer älteren Version von Lombok beim Kompilieren unter JDK8 gesehen. Durch Zurücksetzen des Projekts auf JDK7 wurde das Problem behoben.
quelle
Dies wird nicht das Problem von OP gewesen sein, aber für alle anderen, die alles ohne Erfolg versuchen :
Ich hatte ähnliche Symptome. Wann immer ich nach a baute
mvn clean
, fand es nichtlog
odergetXYZ()
oderbuilder()
oder oder irgendetwas.Nachdem ich alle Antworten zu QueryDSL / JPA / Hibernate / Lombok / IntelliJ / Maven-Problemen ohne Erfolg gelesen hatte, stellte ich fest, dass der Schuldige ein einzelner statischer Import einer
@Getter
Methode war, die in einem statischen Feld mit Anmerkungen versehen war .Spring 1.15.14.RELEASE, Intellij 2019.1.1
quelle
Es ist kein IntelliJ-Problem. Wenn Sie es unter der Konsole versuchen, führen Sie mvn install aus , bricht auch ab. Alle erforderlichen Anmerkungen von lombok.extern fügen Abhängigkeiten hinzu. Dieses Paket gruppiert die nächsten Anmerkungen:
Für Slf4j ist es beispielsweise erforderlich, diese Abhängigkeit zu Ihrer pom.xml hinzuzufügen
quelle
Nachdem Sie Annotation-Prozessoren aktiviert und das Lombok-Plugin installiert hatten, funktionierte es immer noch nicht. Wir haben dies umgangen, indem wir die Ideenoption "IDE-Build an Gradle delegieren" aktiviert haben.
quelle
Für mich war es wichtig, das Kontrollkästchen "Plugin-Registrierung verwenden" in den Maven-Einstellungen zu aktivieren.
Der Pfad lautet: Datei -> Einstellungen -> Erstellen, Ausführen, Bereitstellen -> Erstellen von Tools -> Maven
quelle
Löschen Sie die IDE-Ordner- und IML-Dateien in jedem Modul und erstellen Sie die Lösung neu.
quelle
Ich hatte das Lombok-Plugin, Anmerkungen aktiviert, es wurde über die Befehlszeile kompiliert - alles und mein Projekt wurde immer noch nicht als Maven angezeigt (alle Maven-Abhängigkeiten waren in den Quelldateien rot). Dann habe ich zweimal auf UMSCHALT geklickt und nach 'maven' gesucht. Unter den Ergebnissen befand sich 'Alle Maven-Projekte neu laden'. Nach dem Ausführen erschien die Registerkarte Maven und ich konnte kompilieren. Alle roten Unterstreichungen im Quellcode verschwanden.
quelle