Projekt kann nicht kompiliert werden, wenn ich Lombok unter IntelliJ IDEA verwende

202

Ich versuche, Lombok in meinem Projekt zu verwenden, das ich mit IntelliJ IDEA 11 entwickle.

Ich habe ein Plugin eines Drittanbieters für IDEA installiert und es scheint gut zu funktionieren, da IDEA alle automatisch generierten Methoden / Felder sieht.

Ich habe also eine Klasse, die Slf4j verwendet. Ich habe es so kommentiert

import lombok.extern.slf4j.Slf4j;

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

Aber wenn ich meinen Projekt-Compiler baue, spuckt : cannot find symbol variable log.

Könnten Sie mir bitte sagen, was ich hier vermisse?

Update: Es stellte sich heraus, dass der RequestFactory-Annotationsprozess fehlschlägt.

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

Irgendwelche Ideen zu Problemumgehungen?

Update2: Vielleicht wollen die Leser das nicht hören, aber ich bin zu Scala gewechselt .

Experte
quelle
Fehler treten auch ohne das Plugin auf. Ich kann keine Projekttests ausführen, wenn sich Lombok in meinen pom.xml-Abhängigkeiten befindet.
Nowaker
1
Leser würden es eigentlich vorziehen zu hören, dass Sie zu Eclipse gewechselt sind.
Simeon Leyzerzon
1
Die Leser kommen hierher, um Lösungen für das vorliegende Problem zu finden. Lassen Sie IntelliJ mit lombok arbeiten.
Florian F

Antworten:

411

Ich habe es in IDEA 12 behoben, indem ich das Kontrollkästchen Enable annotation processingin:

Einstellungen -> Compiler -> Anmerkungsprozessoren

Für IDEA 2016.2:

Einstellungen ...> Erstellen, Ausführen, Bereitstellen> Compiler> Anmerkungsprozessoren

Führen Sie nach dem Aktivieren Build -> Rebuild Project aus , um Anmerkungen zu erkennen und Fehler zu beseitigen.


Für IDEA 2019.2.1 ist die Installation des Project Lombok-Plugins je nach Konfiguration des Projekts möglicherweise nicht ausreichend. Hier ist eine andere Möglichkeit, Project Lombok mit IntelliJ IDEA zu verwenden:

  1. Besuchen Sie https://projectlombok.org/download
  2. Laden Sie die JAR-Datei in das Projektbibliotheksverzeichnis herunter (z $HOME/dev/java/project/libs. B. ).
  3. Starten Sie die IDE.
  4. Klicken Sie auf Datei 🠖 Einstellungen .
  5. Erweitern Sie Build, Execution, Deployment 🠖 Compiler 🠖 Annotation Processors .
  6. Stellen Sie sicher, dass die Option Anmerkungsverarbeitung aktivieren aktiviert ist.
  7. Stellen Sie sicher, dass Store basierend auf den Moduleinstellungen des Projekts Quellen relativ zu generiert (wenn das Modulausgabeverzeichnis nicht funktioniert, kehren Sie zurück und versuchen Sie es mit der anderen Einstellung).
  8. Klicken Sie auf Übernehmen .
  9. Klicken Sie auf Plugins .
  10. Klicken Sie auf Marktplatz .
  11. Stellen Sie das Suchfeld auf: lombok
  12. Installieren Sie Lombok .
  13. Klicken Sie auf OK .
  14. Starten Sie die IDE neu, wenn Sie dazu aufgefordert werden.
  15. Klicken Sie auf Datei 🠖 Projekteinstellungen .
  16. Wählen Sie Bibliotheken .
  17. Klicken Sie auf das Symbol + , um eine neue Projektbibliothek hinzuzufügen (oder drücken Sie Alt+ Insert).
  18. Wählen Sie Java .
  19. Stellen Sie den Pfad auf: $HOME/dev/java/project/libs/lombok.jar
  20. Klicken Sie auf OK .
  21. Wählen Sie die anzuwendenden Module aus.
  22. Klicken Sie auf OK .
  23. Optional umbenennen lombokin Project Lombok 1.18.8.
  24. Klicken Sie auf OK .

Das Projekt kann jetzt aus dem lombokPaket importieren und Project Lombok-Anmerkungen (z . B. lombok.Setterund lombok.Getter) verwenden.

user2021572
quelle
Ich musste meine Win10 wegen eines Einfrierproblems (Pilotabsturz) stoppen und IntelliJ wurde geöffnet. Beim Neustart wurden vermutlich die Ideendateien in meinem Projektverzeichnis geändert (workspace.xml) und danach konnte ich meine Getter / Setter-Methoden nicht mehr über Lombok generieren. "Symbol kann nicht gefunden werden" zur Erstellungszeit. Ich rang ein bisschen, um den Ursprung des Problems zu erkennen.
Alex
2
Vergessen Sie nicht, den Annotation-Prozessor festzulegen: lombok.launch.AnnotationProcessorHider $ AnnotationProcessor für das Maven-Compiler-Plugin und Idea (Einstellungen -> Compiler -> Annotation-Prozessoren)
Jan Kubovy
3
Das funktioniert bei mir in 2016.2 nicht. Maven Webprojekt. Das einzige, was funktionierte, war die Installation des Lombok-Plugins.
Maksimov
Idee 16.2.2 + gradle + installiertes lombok plugin. Ich könnte ein Projekt ohne dieses ausführen, wenn ich das Gradle-Runscript verwende (von der Idee). Wenn ich direkt ausführen wollte (da dies die einzige Möglichkeit ist, Code-Hotswap zum Laufen zu bringen), musste ich die Verarbeitung von Anmerkungen aktivieren. Vermutlich konfiguriert die Idee das Projekt nicht automatisch vollständig und Anmerkungen werden trotz des Plugins nicht verarbeitet?
Neikius
Arbeitete für mich in IDEA 2017.01. Die Installation von Lombok funktionierte für Intellisense, jedoch nicht für die Kompilierung, bis Annotation Processor aktiviert wurde.
lreeder
73

Wenn Sie die Verarbeitung von Anmerkungen aktivieren, funktioniert dies

Wenn Sie jedoch einen Mac verwenden , stellen Sie sicher, dass Sie die Anmerkungsverarbeitung an beiden verfügbaren Stellen aktivieren (aktivieren Sie das Kontrollkästchen) .

1.) Intellij Idea -> Einstellungen -> Compiler -> Anmerkungsprozessoren

2.) Datei -> Andere Einstellungen -> Standardeinstellungen -> Compiler -> Anmerkungsprozessoren

greperror
quelle
2
Musste dies auch mit dem neuesten Intellij 15.0.2
BeepDog
1
Noch vorhanden in 15.0.4. Ich musste auch die Lambok-Version auf den neuesten Stand bringen und den Java-Compiler auf JAVAC ändern. Dann machen Sie einen Umbau des Projekts
Srikanta
Muss noch in IntelliJ 2016.1.3 gemacht werden :) Sie müssen die 2 Anmerkungsprozessoren einstellen. So ein Schmerz, wenn du es vergisst!
Ray Hunter
Muss noch in IntelliJ 2016.3 tun :)
Sukesh Kotian
Selbst durch die Aktivierung an beiden Stellen kann IntelliJ 2016.3.2 immer noch nicht mit Lombok 1.16.12 kompiliert werden :(
arcuri82
56

Bilddarstellung zur Lösung dieses Problems.

Aktivieren Sie zuerst Anmerkungsprozessoren und versuchen Sie es. Dies kann funktionieren oder nicht. Geben Sie hier die Bildbeschreibung ein

Danach können Sie das Lombok-Plugin von Intellij aus installieren. (Nach der Installation wird Intellij neu gestartet, um das Plugin zu aktivieren. Speichern Sie also Ihre Arbeit. (Intellij speichert alle Änderungen vor dem Neustart, um auf der sicheren Seite zu sein.) ) Screenshot unten:

Geben Sie hier die Bildbeschreibung ein

CodeShadow
quelle
3
Danke. Ich habe das gleiche Problem. Ich habe vergessen, das Plugin zu installieren, bevor ich die Annotation-Konfiguration festgelegt habe :)
TYL
18
  1. Stellen Sie sicher, dass es Ihrem Projekt korrekt hinzugefügt wurde.

Beispiel für Gradle:

 dependencies {
     compileOnly 'org.projectlombok:lombok:1.18.8'
     annotationProcessor 'org.projectlombok:lombok:1.18.8'
     ...
 }
  1. Installieren Sie das Lombok-Plugin für Ihre IDE
  2. Aktivieren Sie das Kontrollkästchen "Anmerkungsverarbeitung aktivieren" in der IDE (IntellijIdea). Sie haben keine Ahnung, ob es für andere IDEs wie Eclipse so etwas gibt.
Yevhenii Tsybaiev
quelle
1
dies, das und tausendmal das. Vielen Dank, ich war für eine Stunde fest
ch1ll
1
Ja, Sie haben Recht, wir sollten zuerst die Build-Konfiguration und dann die IDE-Einstellung überprüfen. Vielen Dank!
Eric Tan
Dies ist das einzige, was tatsächlich funktioniert hat! Warum hat es nur 13 Likes?!
Doctorram
9

Nur als Referenz mit IntelliJ 2018.3 habe ich dieses Problem (mithilfe von @DataAnmerkungen zum Einfügen getter/setter) in den folgenden drei Schritten gelöst :

  1. Datei -> Einstellungen -> Erstellen, Ausführen, Bereitstellen -> Anmerkungsprozessoren -> Anmerkungsverarbeitung aktivieren;

Geben Sie hier die Bildbeschreibung ein

Denken Sie daran, die Änderung zu übernehmen.

  1. Installieren Sie das Plugin lombok im selben Einstellungsdialog.

Geben Sie hier die Bildbeschreibung ein

  1. Im Moment scheint es gut genug zu sein. Sie müssen IntelliJ neu starten und dann Ihr Projekt neu erstellen.

Die besten Wünsche :)

Gehört
quelle
Hattest du Maven oder Gradle? Ich habe ein Problem damit, dass Lombok für ein Multi-Modul-Projekt funktioniert. Ich 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
bekomme
@ 0x01Brain Ich habe damals Maven verwendet, aber jetzt stattdessen Gradle. Was deine Frage
betrifft
egal, ich habe es jetzt zum Kompilieren bekommen, danke. Ich hatte einen Konflikt in Abhängigkeiten Modul-Core wurde in Utils-Modul importiert und Utils-Modul wurde in Core-Modul importiert, was einen Konflikt verursachte.
0x01Brain
8

Wenn Sie beide Schritte wie folgt überprüft haben

  1. Anmerkungen aktivieren: Dies ist eine Überprüfung, die in den IntelliJ-Einstellungen durchgeführt wird.
  2. Lombok in IntelliJ classPath importieren (Einstellungen -> Plugins)

Wenn immer noch Fehler auftreten , überprüfen Sie bitte den Compiler - ob es sich um JAVAC oder ECLIPSE handelt .

Sie können den Compiler unter Einstellungen -> Erstellen, Ausführen, Bereitstellen -> Compiler -> Java-Compiler überprüfen.

Ändern Sie den Use-Compiler in Javac (falls es sich um Eclipse handelt). Das hat bei mir funktioniert.

Saurabh Saha
quelle
8

In der neuesten Gradle-Version sollten Sie annotationProcessor verwenden:

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

Wie hier angegeben , zitieren Sie: "Sie sollten die Option für den externen Compiler aktivieren und Anmerkungsprozessoren aktivieren oder den externen Compiler deaktivieren und alle Anmerkungs-Compiler für die Arbeit mit Lombok deaktivieren." Dies hat mein Problem behoben. Beachten Sie, dass ich das Scala-Plugin hinzugefügt habe, bevor ich diesen Fehler erhalten habe. Ich vermute, dass das Plugin einige der oben genannten Einstellungen geändert hat.

Omri Sivan
quelle
7

Es gibt ein Plugin für Intellij. siehe hier: https://projectlombok.org/download.html

mt.uulu
quelle
2
Dieses Plugin kann im Menü Einstellungen / Plugins von Intellij installiert werden. Stellen Sie sicher, dass Sie das neueste Plugin installiert haben. Das Upgrade auf das neueste Plugin hat bei mir funktioniert.
JasonM1
5

Haben Sie Lombok als Abhängigkeit von Ihrem Projekt? lombok.jar muss sich beim Kompilieren des Projekts im Klassenpfad befinden, das eine der lombok-Annotationen verwendet.

mplushnikov
quelle
Es stellte sich heraus, dass es im Anmerkungsprozessor fehlschlägt. Ich habe meine Frage mit dem Ausgabeprotokoll aktualisiert.
Experte
3

Ich war auf Mac

Dies ist meine IntelliJ IDEA- und Mac-Version - IntelliJ IDEA 2017.1.5 Build # IU-171.4694.70 --- Mac OS X 10.12

Zusätzlich zur Aktivierung der Anmerkungsverarbeitung (aktivieren Sie das Kontrollkästchen) an diesen beiden Stellen.

1.) Intellij IDEA -> Einstellungen -> Compiler -> Anmerkungsprozessoren

.

2.) Datei -> Andere Einstellungen -> Standardeinstellungen -> Compiler -> Anmerkungsprozessoren

Ich musste auch das Lombok-Plugin installieren, damit es funktioniert.

3.) Intellij IDEA -> Einstellungen -> Plugins -> Repositorys durchsuchen -> Nach "Lombok" suchen -> Plugin installieren -> IDEA anwenden und neu starten

so zufälliger Typ
quelle
2

Für diejenigen unter Ihnen, die immer noch Probleme haben:

Zusätzlich zu den oben genannten Schritten zum Aktivieren von Anmerkungsprozessoren und zum Installieren des IntelliJ Lombok-Plugins musste ich auch Build -> Rebuild Project erstellen.

JasnaRB
quelle
2
Ich musste auch den Cache ungültig machen und neu starten, bevor Intellij aufhörte, sich zu beschweren.
Hans
2

1 、 Installieren Sie das Lombok-Plugin für IDEA

Intellij Idea -> Einstellungen -> Plugins -> Lombok eingeben -> In Repositorys suchen -> Installieren -> IDEA neu starten

2 、 config lombok plugin

Wenn Sie die Verarbeitung von Anmerkungen aktivieren, funktioniert dies

Wenn Sie jedoch einen Mac verwenden, stellen Sie sicher, dass Sie die Anmerkungsverarbeitung an den folgenden zwei Stellen aktivieren:

Intellij Idea -> Einstellungen -> Erstellen, Ausführen, Bereitstellen -> Compiler -> Anmerkungsprozessoren, aktivieren Sie das Kontrollkästchen "Anmerkungsverarbeitung aktivieren". Datei -> Andere Einstellungen -> Standardeinstellungen -> Erstellen, Ausführen, Bereitstellen -> Compiler -> Anmerkungsprozessoren, aktivieren Sie das Kontrollkästchen "Anmerkungsverarbeitung aktivieren".

Bruce
quelle
Ich sehe keine Standardeinstellungen in anderen Einstellungen in IntelliJ. Sind diese noch vorhanden? Ich benutze die Ultimate Edition
Version 11.03
1

Bei keiner der oben genannten Lösungen hat es bei mir nicht funktioniert. Ich <scope>provided</scope>habe die Abhängigkeit in pom.xml hinzugefügt und es hat funktioniert.

<dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.20</version>
        <scope>provided</scope>
    </dependency>
Shreya Mishra
quelle
Welche Version von IntelliJ verwenden Sie? Auch welche JDK-Version?
RealPK
1

Ich habe dieses Problem nach der Aktualisierung der IDEA auf 2018.3 festgestellt. Ich musste das gesamte vorhandene Plugin aktualisieren

Srikanth Reddy
quelle
1

Nachdem ich alle Vorschläge hier ausprobiert habe, habe ich auch eine andere Art von Lösung gefunden. Es scheint, dass IDEA manchmal keine Prozessoren aus dem Projektklassenpfad erhalten kann.

Also, auf der Annotation Processors Registerkarte Einstellungen, müssen Sie manuell festlegen Prozessorpfad .

Stepan Mozyra
quelle
0

Ich hatte ein ähnliches Problem beim Erstellen mit JDK8, setzte das Projekt wieder auf JDK7 und es funktionierte einwandfrei. Könnte eine ältere Version von Lombok sein, die unter JDK8 nicht kompiliert werden kann.

John Chapman
quelle
Ich hatte auch das gleiche Problem. Versuchen Sie, die Version von Lombok so zu ändern, dass IntelliJ die Abhängigkeit erneut herunterlädt.
Sanghyun Lee
0

Ich hatte das gleiche Problem, deshalb werde ich dies hier belassen, um später auf meine Unwissenheit zurückgreifen zu können.

Wenn Alt+Enterauf ing @Slf4jAnmerkung versehentlich ich ungültig Import gewählt haben. Wenn der Code nicht kompiliert werden kann, stellen Sie sicher, dass Sie Folgendes importieren:

import lombok.extern.slf4j.Slf4j;

Sok Pomaranczowy
quelle
0

FWIW - Stellen Sie beim Festlegen von Compiler-Annotationen wie oben beschrieben sicher, dass Sie auch nach Profilen suchen, die Sie verwenden, z. B. "Maven-Standard-Annotationsprozessoren".

Wieder
quelle
0

Es kann vorkommen, dass IntelliJ es selbst dann nicht im Klassenpfad hat, wenn Sie es richtig konfiguriert haben und es in den Bibliotheken und in der Gradle-Abhängigkeitsliste sichtbar ist. Oder es ist da, aber mit einem anderen Bereich konfiguriert (z. B. Test statt Kompilieren.)

Stellen Sie zunächst sicher, dass das Plugin installiert und die Anmerkungsverarbeitung aktiviert ist, wie in anderen Antworten angegeben.

Wenn Sie immer noch keine Anmerkung erkannt haben, setzen Sie den Cursor darauf, drücken Sie ALT + ENTER (oder OPTION + ENTER) und prüfen Sie, ob Sie eine Menüoption haben Add library: Gragle: org.projectlombok:lombok:VERSION to class path. Wenn Sie es sehen können, wählen Sie dieses und es kann Ihr Problem lösen.

Sie können die Bibliothek und ihren Umfang unter folgender Adresse überprüfen: Registerkarte Projekteinstellungen / Module / Abhängigkeiten (dort nach Lombok suchen)

wst
quelle
0

Wenn Sie alle hier vorgestellten Lösungen ausprobiert haben und dennoch keine Quellen kompilieren können, sehen Sie auch hier nach: Der statische Import der Builder-Klasse unterbricht die Bytecode-Generierung in Maven - sehen Sie sich Ihre Quellen an, wenn solche statischen Importe vorhanden sind. Dies wirkt sich auf das Maven-Plugin aus, sodass die Kompilierung auf anderen Build-Systemen außerhalb von IntelliJ IDEA fehlschlägt.

Cybersoft
quelle
0

In meinem Fall hatte ich alle unten genannten Dinge an Ort und Stelle und es funktionierte immer noch nicht.

  1. Ich hatte das Lombok-Plugin korrekt installiert
  2. Anmerkungsprozessoren, ebenfalls aktiviert.
  3. Mein Java-Compiler wurde auf JAVAC gesetzt

Um meine Probleme zu beheben, musste ich

  1. Aktualisieren Sie lombok auf die neueste Version (v0.15) am 7. Oktober 2017.
  2. Starten Sie IntelliJ neu.
  3. Projekt neu erstellen.

Unten finden Sie Screenshots zum Aktualisieren und Wiederherstellen des Projekts.

So aktualisieren Sie lombok

So erstellen Sie ein Projekt neu

Kehinde Adedamola Shittu
quelle
0

Sie können cannot find symbol variable logFolgendes beheben, wenn Sie lombok in IntelliJ IDEA 2017.1.3 verwenden:

IntelliJ-Einstellungen> Erstellen, Ausführen, Bereitstellen> Anmerkungsprozessoren> [Aktivieren] Anmerkungsverarbeitung aktivieren> Übernehmen

realPK
quelle
0

Installieren Sie das folgende Plugin und starten Sie die IDE neu, um die Fehler zu beheben:

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

Anmerkungsprozessor aktivieren:

File -> Settings -> Build, Execution, Deployment -> Compiler -> Annotation Processors
File -> Other Settings -> Default Settings -> Compiler -> Annotation Processors
Erster Postkommentator
quelle
0

Ich hatte ein ähnliches Problem. Folgendes hat bei mir funktioniert.

Laden Sie es herunter (von hier https://projectlombok.org/download ) und fügen Sie das Glas in Ihre Projektstruktur ein.

Schritte: Datei -> Projektstruktur -> Globale Bibliotheken

Herr Niemand
quelle
0

Wenn die Lombok-Bibliotheken korrekt eingestellt sind, wie oben erwähnt, klicken Sie auf die Anmerkung, die nicht kompiliert werden kann, Alt-Enter. Ein korrekter Import wird angezeigt und der Code wird kompiliert. - Ich habe eine Weile gebraucht, um es herauszufinden. Ich sage es hier nur für den Fall, dass die Leute das einfache Offensichtliche übersehen.

TGU
quelle
0

Führen Sie dies für Eclipse-Benutzer unter MacOS aus. Es hat bei mir funktioniert.

  1. Kopieren Sie lombok.jar in das Eclipse.app/Contents/MacOSVerzeichnis.
  2. Fügen Sie -javaagent:lombok.jaram Ende der Datei Eclipse.app/Contents/Eclipse/eclipse.ini hinzu.
  3. Starten Sie Eclipse neu und aktivieren Sie "Anmerkungsverarbeitung" in den Projekteigenschaften.

Darauf verweisen

Zhongjun 'Mark' Jin
quelle
0

Abgesehen von allen Antworten muss ich den folgenden Code in der pom.xml-Konfiguration hinzufügen, damit die mvn-Neuinstallation funktioniert. Vor dem Hinzufügen dieses Codes konnte ich kein Symbol für Getter und Setter finden.

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

Für mich hat was funktioniert:

  1. Ich habe das installierte Lombok-Plugin frisch deinstalliert
  2. Ich habe "Annotation Plugin aktivieren" angekreuzt.
  3. Ich habe auf derselben Seite "Prozessor aus dem Projektklassenpfad beziehen" ausgewählt
Sagiruddin Mondal
quelle
0

Für IntelliJ IDEA 2020.1.1 wurde dieses Problem durch Aktivieren des Kotlin-Plugins behoben.

Vova Perebykivskyi
quelle