Non riesco a compilare il progetto quando sto usando Lombok sotto IntelliJ IDEA


202

Sto cercando di usare Lombok nel mio progetto che sto sviluppando usando IntelliJ IDEA 11.

Ho installato plugin di terze parti per IDEA e sembra funzionare bene perché IDEA vede tutti i metodi / campi generati automaticamente.

Quindi ho una classe che usa Slf4j. L'ho annotato in questo modo

import lombok.extern.slf4j.Slf4j;

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

Ma quando costruire il mio progetto spiedi compilatore: cannot find symbol variable log.

Potresti dirmi cosa mi manca qui?

Aggiornamento: si è scoperto che il processo di annotazione RequestFactory non riesce.

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

Qualche idea su soluzioni alternative?

Update2: Forse non è qualcosa che i lettori vogliono ascoltare, ma ho finito per passare a Scala .


Gli errori compaiono anche senza il plugin. Non sono in grado di eseguire test di un progetto se Lombok è nelle mie dipendenze pom.xml.
Nowaker,

1
I lettori preferirebbero davvero sapere che sei passato a Eclipse.
Simeon Leyzerzon,

1
I lettori vengono qui per soluzioni al problema in corso, fanno funzionare IntelliJ con lombok.
Florian F

Risposte:


412

L'ho corretto in IDEA 12 impostando la casella di controllo Enable annotation processingin:

Impostazioni -> Compilatore -> Processori di annotazione

Per IDEA 2016.2:

Preferenze ...> Build, Execution, Deployment> Compiler> Processori di annotazione

Dopo aver abilitato, esegui Build -> Rebuild Project per riconoscere le annotazioni ed eliminare gli errori.


Per IDEA 2019.2.1, a seconda della configurazione del progetto, l'installazione del plug-in Project Lombok potrebbe non essere sufficiente. Ecco un altro modo di utilizzare Project Lombok con IntelliJ IDEA:

  1. Visita https://projectlombok.org/download
  2. Scarica il file JAR nella directory lib del progetto (ad es $HOME/dev/java/project/libs.).
  3. Avvia l'IDE.
  4. Fare clic su File 🠖 Impostazioni .
  5. Espandi Creazione, esecuzione, distribuzione 🠖 Compilatore 🠖 Processori di annotazione .
  6. Assicurati che Abilita elaborazione annotazioni sia selezionata.
  7. Assicurarsi che Store generi fonti relative a sia selezionato in base alle impostazioni del modulo del progetto (se la directory di output del modulo non funziona, tornare indietro e provare l'altra impostazione).
  8. Fai clic su Applica .
  9. Fai clic su Plugin .
  10. Fai clic su Marketplace .
  11. Imposta il campo di ricerca su: lombok
  12. Installa Lombok .
  13. Clicca OK .
  14. Riavviare l'IDE se richiesto.
  15. Fare clic su File Settings Impostazioni progetto .
  16. Seleziona Librerie .
  17. Fare clic sul simbolo + per aggiungere una nuova libreria di progetti (o premere Alt+ Insert).
  18. Selezionare Java .
  19. Imposta il percorso su: $HOME/dev/java/project/libs/lombok.jar
  20. Clicca OK .
  21. Seleziona i moduli da applicare.
  22. Clicca OK .
  23. Facoltativamente, rinominare lombokin Project Lombok 1.18.8.
  24. Clicca OK .

Il progetto può ora importare dal lombokpacchetto e utilizzare le annotazioni di Project Lombok (ad es. lombok.SetterE lombok.Getter).


Ho dovuto interrompere Win10 per un problema di blocco (crash del pilota) e IntelliJ è stato aperto. Al riavvio, suppongo che i file dell'idea nella directory del mio progetto siano stati modificati (workspace.xml) e successivamente non sono riuscito a generare i miei metodi getter / setter tramite lombok. "Impossibile trovare il simbolo" al momento della creazione. Ho lottato un po 'per individuare l'origine del problema.
Alex,

2
Non dimenticare di impostare il processore di annotazione: lombok.launch.AnnotationProcessorHider $ AnnotationProcessor sia per il plugin-compilatore-maven che per Idea (Impostazioni -> Compilatore -> Processori di annotazione)
Jan Kubovy,

3
Questo non funziona per me nel 2016.2. Progetto web Maven. L'unica cosa che ha funzionato è stata l'installazione del plugin lombok.
Maksimov,

Idea 16.2.2 + gradle + plugin lombok installato. Potrei eseguire il progetto senza questo quando uso il runscript gradle (dall'idea). Se volevo eseguire direttamente (poiché questo è l'unico modo che conosco per far funzionare il codice hotswap) avrei dovuto abilitare l'elaborazione delle annotazioni. Indovina che l'idea non configura automaticamente il progetto e le annotazioni non vengono elaborate nonostante il plugin?
Neikius,

Ha lavorato per me in IDEA 2017.01. L'installazione di Lombok ha funzionato per Intellisense, ma non per la compilazione fino all'abilitazione del Processore di annotazione.
Lreeder,

73

L'abilitazione dell'elaborazione delle annotazioni lo farà funzionare

Ma se sei su un Mac , assicurati di abilitare l'elaborazione delle annotazioni (seleziona la casella di controllo) da entrambi i posti disponibili.

1.) Idea Intellij -> Preferenze -> Compilatore -> Processori di annotazione

2.) File -> Altre impostazioni -> Impostazioni predefinite -> Compilatore -> Processori di annotazione


2
Ho dovuto farlo anche con l'ultimo Intellij 15.0.2
BeepDog

1
Ancora presente in 15.0.4. Ho anche dovuto aggiornare la versione Lambok alla versione più recente e modificare il compilatore Java in JAVAC. Quindi fai una ricostruzione del progetto
Srikanta

È ancora necessario farlo in IntelliJ 2016.1.3 :) È necessario impostare i 2 processori di annotazione. Che dolore quando te ne dimentichi!
Ray Hunter,

Devo

anche attivando in entrambi i posti, IntelliJ 2016.3.2 non riesce ancora a compilare con Lombok 1.16.12 :(
arcuri82

56

Rappresentazione delle immagini per la risoluzione di questo problema.

Per prima cosa abilita i processori di annotazioni e prova. Questo potrebbe funzionare o meno. inserisci qui la descrizione dell'immagine

Pubblica quello, puoi installare il plugin lombok da intellij, (Dopo l'installazione Intellij si riavvierà per abilitare il plugin, quindi assicurati di salvare il tuo lavoro (Intellij salva tutte le modifiche prima di riavviare, solo per essere al sicuro). ) screenshot qui sotto:

inserisci qui la descrizione dell'immagine


3
grazie .. ho avuto lo stesso problema. Ho dimenticato di installare il plug-in prima di impostare la configurazione
dell'annotazione

19
  1. Assicurati che sia aggiunto correttamente al tuo progetto.

esempio per Gradle:

 dependencies {
     compileOnly 'org.projectlombok:lombok:1.18.8'
     annotationProcessor 'org.projectlombok:lombok:1.18.8'
     ...
 }
  1. Installa il plugin Lombok per il tuo IDE
  2. Seleziona la casella di controllo "Abilita elaborazione annotazione" in IDE (IntellijIdea), non hai idea se esiste qualcosa di simile per altri IDE come Eclipse.

1
questo, questo e mille volte questo. Grazie, sono rimasto bloccato per un'ora
ch1ll

1
sì, hai ragione, dovremmo prima verificare la configurazione della configurazione, quindi l'impostazione IDE. grazie un mucchio!
Eric Tan,

Questa è l'unica cosa che ha funzionato davvero! Perché ha solo 13 Mi piace ?!
doctorram,

L'unica soluzione che ha funzionato per me: D grazie !!
Bianca,

9

Solo per riferimento usando IntelliJ 2018.3 , ho risolto questo problema (usando l' @Dataannotazione per inserire getter/setter) seguendo i tre passaggi:

  1. File -> Impostazioni -> Build, Execution, Deployment -> Processors di annotazione -> Abilita elaborazione delle annotazioni;

inserisci qui la descrizione dell'immagine

Ricorda di applicare la modifica.

  1. Installa il plugin lombok nella stessa finestra di dialogo delle impostazioni;

inserisci qui la descrizione dell'immagine

  1. Sembra abbastanza buono per ora, richiede il riavvio di IntelliJ e quindi la ricostruzione del progetto.

Auguri :)


Avevi avuto Maven o Gradle? Ho un problema a far funzionare lombok per un progetto multi modulo. Continuo a ricevere l'errore: 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
0x01Brain

@ 0x01Brain Mi stavo usando Maven in quel momento, ma ora con Gradle invece. Per quanto riguarda la tua domanda, spero che tu possa iniziare una nuova domanda specifica per descrivere i dettagli e ci sono molti esperti là fuori che ti aiuteranno;)
Sentito il

non importa, ho avuto modo di compilare ora, grazie. Ho avuto qualche conflitto nelle dipendenze modulo-core è stato importato nel modulo utils e il modulo utils è stato importato nel modulo core che ha causato un conflitto.
0x01Brain

8

Se hai verificato entrambi questi passaggi come segue

  1. Abilita annotazioni: questo è un controllo fatto nelle preferenze di IntelliJ.
  2. Importazione di lombok in IntelliJ classPath (Preferenze -> Plugin)

e continua a ricevere errori, quindi controlla il compilatore , se è JAVAC o ECLIPSE .

Puoi controllare il compilatore in Preferenze -> Build, Execution, Deployment -> Compiler -> Java Compiler.

Cambia il compilatore Usa in Javac (se è Eclipse). Questo è ciò che ha funzionato per me.


8

nell'ultima versione di Gradle dovresti usare annotationProcessor:

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

7

Come indicato qui , citare: "È necessario attivare l'opzione del compilatore esterno e abilitare i processori di annotazione o disabilitare il compilatore esterno e disabilitare tutti i compilatori di annotazioni per funzionare con lombok". Questo ha risolto il mio problema. Nota che ho aggiunto il plug-in Scala prima di ricevere questo errore, quindi sospetto che il plug-in abbia modificato alcune delle impostazioni precedenti.



5

Hai lombok come dipendenza del tuo progetto? lombok.jar deve trovarsi sul percorso di classe durante la compilazione del progetto, che utilizza una qualsiasi delle annotazioni di lombok.


Si è scoperto che non riesce all'interno del processore di annotazione. Ho aggiornato la mia domanda con il registro di output.
esperto

3

ero su Mac

Questa è la mia IntelliJ IDEA e la versione Mac - IntelliJ IDEA 2017.1.5 Build # IU-171.4694.70 --- Mac OS X 10.12

Oltre a consentire l'elaborazione delle annotazioni (spuntare la casella di controllo) in questi 2 punti.

1.) Intellij IDEA -> Preferenze -> Compilatore -> Processori di annotazione

.

2.) File -> Altre impostazioni -> Impostazioni predefinite -> Compilatore -> Processori di annotazione

Ho dovuto installare anche il plugin Lombok per farlo funzionare.

3.) Intellij IDEA -> Preferenze -> Plugin -> Sfoglia repository-> Cerca "Lombok" -> installa plug-in -> Applica e riavvia IDEA


2

Per quelli di voi che hanno ancora problemi:

Oltre ai passaggi precedenti per l'abilitazione dei processori di annotazione e l'installazione del plug-in IntelliJ Lombok, ho dovuto anche costruire -> Ricostruisci progetto.


2
Ho anche dovuto invalidare la cache e riavviare prima che Intellij smettesse di lamentarsi.
Hans,

2

1 、 installa il plugin lombok per IDEA

Intellij Idea -> Preferenze -> Plugin -> digita lombok -> Cerca nei repository -> installa -> riavvia IDEA

2 、 config lombok plugin

L'abilitazione dell'elaborazione delle annotazioni lo farà funzionare

Ma se sei su un Mac, assicurati di abilitare l'elaborazione delle annotazioni nei seguenti due posti:

Intellij Idea -> Preferenze -> Build, Execution, Deployment -> Compiler -> Processori di annotazione, selezionare la casella di controllo "Abilita elaborazione delle annotazioni". File -> Altre impostazioni -> Impostazioni predefinite -> Build, Execution, Deployment -> Compiler -> Processori di annotazione, selezionare la casella di controllo "Abilita elaborazione delle annotazioni".


Non vedo Impostazioni predefinite in Altre impostazioni in IntelliJ. Sono ancora presenti. Sto usando l'edizione Ultimate - versione
11.03

1

Non ha funzionato per me con nessuna delle soluzioni di cui sopra. Ho aggiunto <scope>provided</scope>la dipendenza in pom.xml e ha funzionato.

<dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.20</version>
        <scope>provided</scope>
    </dependency>

Quale versione di IntelliJ stai usando? Inoltre, quale versione di JDK?
realPK,

1

Ho riscontrato questo problema dopo aver aggiornato l'IDEA al 2018.3. Ho dovuto aggiornare tutti i plugin esistenti


1

Dopo aver provato tutti i suggerimenti qui, ho anche trovato un altro tipo di soluzione. Sembra che a volte IDEA non possa ottenere processori dal percorso di classe del progetto.

Pertanto, nella scheda Impostazioni processori annotazione , è necessario specificare manualmente il percorso del processore .


0

Ho avuto un problema simile durante la compilazione con JDK8, ho ripristinato il progetto su JDK7 e ha funzionato bene. Potrebbe essere una versione precedente di Lombok che non verrà compilata in JDK8.


Ho avuto anche lo stesso problema. Prova a cambiare la versione di Lombok in modo che IntelliJ scarichi nuovamente la dipendenza.
Sanghyun Lee,

0

Ho avuto lo stesso problema, quindi lo lascerò qui per riferimento futuro della mia dimenticanza.

Quando Alt+Entering sulle @Slf4jannotazioni ho erroneamente scelto di importazione non valido. Quindi, se il codice non viene compilato, assicurati di importare:

import lombok.extern.slf4j.Slf4j;


0

FWIW - Quando si impostano le annotazioni del compilatore come descritto sopra, assicurarsi di verificare anche la presenza di eventuali profili che si stanno utilizzando, ad esempio "Processori di annotazioni predefiniti Maven".


0

Può succedere che anche se lo hai configurato correttamente ed è visibile tra le librerie e nell'elenco delle dipendenze Gradle, IntelliJ non lo ha ancora nel percorso di classe. O è lì, ma configurato con ambito diverso (es: test invece di compilare.)

Innanzitutto, assicurati di aver installato il plug-in e l'elaborazione delle annotazioni abilitata, come indicato in altre risposte.

Se hai ancora un'annotazione non riconosciuta, posiziona il cursore su di essa, premi ALT + INVIO (o OPZIONE + INVIO) e vedi se hai un'opzione di menu Add library: Gragle: org.projectlombok:lombok:VERSION to class path. Se riesci a vederlo, scegli questo e potrebbe risolvere il tuo problema.

Puoi controllare la libreria e il suo ambito in: Impostazioni progetto / Moduli / Scheda Dipendenze (cerca lombok lì dentro)



0

Nel mio caso, avevo tutte le cose menzionate di seguito e non funzionava ancora.

  1. Ho installato correttamente il plugin lombok
  2. Processori di annotazione, anche controllati.
  3. Il mio compilatore Java era impostato su JAVAC

Ho dovuto risolvere i miei problemi

  1. Aggiorna lombok all'ultima versione (v0.15) del 7 ottobre 2017.
  2. Riavvia IntelliJ.
  3. Ricostruisci progetto.

Vedi schermate su come aggiornare e ricostruire il progetto di seguito.

Come aggiornare lombok

Come ricostruire il progetto


0

È possibile correggere cannot find symbol variable logquando si utilizza lombok in IntelliJ IDEA 2017.1.3 nel modo seguente:

Preferenze IntelliJ> Creazione, esecuzione, distribuzione> Processori di annotazione> [Controlla] Abilita elaborazione annotazione> Applica


0

Installa il plugin seguente e riavvia l'IDE per risolvere gli errori:

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

Abilita processore di annotazioni:

File -> Settings -> Build, Execution, Deployment -> Compiler -> Annotation Processors
File -> Other Settings -> Default Settings -> Compiler -> Annotation Processors


0

Se le librerie lombok sono impostate correttamente, come molti di cui sopra, fai clic sull'annotazione che non si compilerebbe, Alt-Enter, apparirà una corretta importazione e il codice verrà compilato. - Mi ci è voluto un po 'per capirlo. L'ho messo qui nel caso in cui la gente potesse perdere il semplice ovvio.


0

Per gli utenti Eclipse su MacOS, farlo. Ha funzionato per me.

  1. Copia lombok.jar nella Eclipse.app/Contents/MacOSdirectory.
  2. Aggiungi -javaagent:lombok.jaralla fine del file Eclipse.app/Contents/Eclipse/eclipse.ini.
  3. Riavvia Eclipse e abilita “Elaborazione annotazione” nelle proprietà del progetto.

Riferendosi a questo


0

Oltre a menzionato in tutte le risposte, devo aggiungere il codice seguente nella configurazione pom.xml per far funzionare mvn clean install. Prima di aggiungere questo codice non riuscivo a trovare il simbolo per getter e setter.

                    <annotationProcessorPath>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                        <version>1.18.8</version>
                    </annotationProcessorPath>

0

Per me cosa ha funzionato:

  1. Ho disinstallato di recente il plug-in Lombok installato
  2. Ho spuntato "Abilita plug-in di annotazione"
  3. Ho selezionato "Ottieni processore dal percorso di classe del progetto" nella stessa pagina

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.