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 .


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.


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


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


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.

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 :)


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.


8

In der neuesten Gradle-Version sollten Sie annotationProcessor verwenden:

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

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.


7

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


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.


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


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.


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".


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>

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


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 .


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.


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;


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".


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)



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


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


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

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


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.


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


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>

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.