No se puede compilar el proyecto cuando estoy usando Lombok bajo IntelliJ IDEA


202

Estoy tratando de usar Lombok en mi proyecto que estoy desarrollando usando IntelliJ IDEA 11.

He instalado un complemento de terceros para IDEA y parece funcionar bien porque IDEA ve todos los métodos / campos autogenerados.

Entonces tengo una clase que usa Slf4j. Lo anoté así

import lombok.extern.slf4j.Slf4j;

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

Pero cuando construyo mi compilador de proyectos escupe: cannot find symbol variable log .

¿Podría decirme qué me estoy perdiendo aquí?

Actualización: Resultó que su proceso de anotación RequestFactory falla.

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

¿Alguna idea sobre soluciones alternativas?

Actualización 2: Tal vez no sea algo que los lectores quieran escuchar, pero terminé cambiando a Scala .


Los errores aparecen incluso sin el complemento. No puedo ejecutar pruebas de un proyecto si Lombok está en mis dependencias pom.xml.
Nowaker

1
Los lectores en realidad preferirían saber que te has cambiado a Eclipse.
Simeon Leyzerzon

1
Los lectores vienen aquí para encontrar soluciones al problema en cuestión, hacer que IntelliJ funcione con lombok.
Florian F

Respuestas:


412

Lo arreglé en IDEA 12 configurando la casilla de verificación Enable annotation processingen:

Configuración -> Compilador -> Procesadores de anotación

Para IDEA 2016.2:

Preferencias ...> Compilación, ejecución, implementación> Compilador> Procesadores de anotación

Después de habilitar, ejecute Build -> Rebuild Project para que se reconozcan las anotaciones y se eliminen los errores.


Para IDEA 2019.2.1, dependiendo de cómo esté configurado el proyecto, la instalación del complemento Project Lombok puede no ser suficiente. Aquí hay otra forma de usar Project Lombok con IntelliJ IDEA:

  1. Visita https://projectlombok.org/download
  2. Descargue el archivo JAR en el directorio lib del proyecto (por ejemplo, $HOME/dev/java/project/libs).
  3. Inicia el IDE.
  4. Haga clic en Archivo 🠖 Configuración .
  5. Expanda Build, Execution, Deployment 🠖 Compiler 🠖 Annotation Processors .
  6. Asegúrese de que Habilitar el procesamiento de anotaciones esté marcado.
  7. Asegúrese de que la Tienda genera fuentes en relación con se selecciona en función de la configuración del módulo del proyecto (si el directorio de salida del Módulo no funciona, vuelva y pruebe la otra configuración).
  8. Haz clic en Aplicar .
  9. Haz clic en Complementos .
  10. Haz clic en Marketplace .
  11. Establezca el campo de búsqueda en: lombok
  12. Instala Lombok .
  13. Haz clic en Aceptar .
  14. Reinicie el IDE si se le solicita.
  15. Haga clic en Archivo Settings Configuración del proyecto .
  16. Seleccionar bibliotecas .
  17. Haga clic en el símbolo + para agregar una nueva biblioteca de proyectos (o presione Alt+ Insert).
  18. Selecciona Java .
  19. Establecer el camino a: $HOME/dev/java/project/libs/lombok.jar
  20. Haz clic en Aceptar .
  21. Seleccione los módulos a aplicar.
  22. Haz clic en Aceptar .
  23. Opcionalmente, cambie el nombre lomboka Project Lombok 1.18.8.
  24. Haz clic en Aceptar .

El proyecto ahora puede importar desde el lombokpaquete y usar anotaciones de Project Lombok (por ejemplo, lombok.Settery lombok.Getter).


Tuve que detener mi Win10 por un problema de congelación (bloqueo del piloto) y se abrió IntelliJ. Al reiniciar, supongo que los archivos de ideas en el directorio de mi proyecto se han modificado (workspace.xml) y después de eso no pude generar mis métodos getters / setters a través de lombok. "No se puede encontrar el símbolo" en el momento de la compilación. Luché un poco para detectar el origen del problema.
Alex

2
No olvide configurar el procesador de anotaciones: lombok.launch.AnnotationProcessorHider $ AnnotationProcessor para maven-compiler-plugin e Idea (Configuración -> Compilador -> Procesadores de anotaciones)
Jan Kubovy

3
Esto no me funciona en 2016.2. Proyecto web Maven. Lo único que funcionó fue instalar el complemento lombok.
maksimov

Idea 16.2.2 + gradle + plugin lombok instalado. Podría ejecutar el proyecto sin esto cuando uso el gradle runcript (de idea) Si quería ejecutar directamente (dado que esta es la única forma en que sé hacer que el código hotswap funcione) tenía que habilitar el procesamiento de anotaciones. ¿Guess idea no configura automáticamente el proyecto por completo y las anotaciones no se procesan a pesar del complemento?
Neikius

Trabajó para mí en IDEA 2017.01. La instalación de Lombok funcionó para Intellisense, pero no para la compilación hasta que se habilitó el procesador de anotaciones.
lreeder

73

Habilitar el procesamiento de anotaciones lo hará funcionar

Pero si está en una Mac , asegúrese de habilitar el procesamiento de anotaciones (marque la casilla de verificación) desde ambos lugares disponibles.

1.) Intellij Idea -> Preferencias -> Compilador -> Procesadores de anotaciones

2.) Archivo -> Otras configuraciones -> Configuración predeterminada -> Compilador -> Procesadores de anotación


2
Todavía tenía que hacer esto incluso con el último intellij 15.0.2
BeepDog

1
Todavía presente en 15.0.4. También tuve que actualizar la versión de Lambok a la última y cambiar el compilador de Java a JAVAC. Luego haga una reconstrucción del proyecto
Srikanta

Todavía debe hacerlo en IntelliJ 2016.1.3 :) Debe configurar los 2 procesadores de anotación. ¡Qué dolor cuando te olvidas de eso!
Ray Hunter

Todavía debe hacerlo en IntelliJ 2016.3 :)
Sukesh Kotian

incluso activando en ambos lugares, IntelliJ 2016.3.2 todavía no puede compilar con Lombok 1.16.12 :(
arcuri82

56

Representación de la imagen para resolver este problema.

Primero habilite los procesadores de anotaciones e intente. Esto puede o no funcionar. ingrese la descripción de la imagen aquí

Publique eso, puede instalar el complemento lombok desde intellij (después de la instalación, Intellij se reiniciará para habilitar el complemento, así que asegúrese de guardar su trabajo. (Intellij guarda todos los cambios antes de reiniciar, solo para estar seguro). ) captura de pantalla a continuación:

ingrese la descripción de la imagen aquí


3
gracias .. Tengo el mismo problema. Olvidé instalar el complemento antes de configurar la configuración de Anotación :)
TYL

19
  1. Asegúrese de que se haya agregado correctamente a su proyecto.

ejemplo para Gradle:

 dependencies {
     compileOnly 'org.projectlombok:lombok:1.18.8'
     annotationProcessor 'org.projectlombok:lombok:1.18.8'
     ...
 }
  1. Instale el complemento Lombok para su IDE
  2. Marque la casilla de verificación "Habilitar procesamiento de anotaciones" en IDE (IntellijIdea), no tenga idea de si hay algo así para otros IDE como Eclipse.

1
esto, esto y mil veces esto. Gracias, estuve atrapado durante una hora
ch1ll

1
sí, tienes razón, primero debemos verificar la configuración de compilación, luego la configuración IDE. gracias un montón!
Eric Tan

¡Esto es lo único que realmente funcionó! ¿Por qué solo tiene 13 me gusta?
doctorram

La única solución que funcionó para mí: D gracias !!
Bianca

9

Solo como referencia usando IntelliJ 2018.3 , resolví este problema (usando @Dataanotaciones para insertar getter/setter) siguiendo los tres pasos:

  1. Archivo -> Configuración -> Compilación, ejecución, implementación -> Procesadores de anotación -> Habilitar procesamiento de anotación;

ingrese la descripción de la imagen aquí

Recuerde aplicar el cambio.

  1. Instale el complemento lombok en el mismo cuadro de diálogo de configuración;

ingrese la descripción de la imagen aquí

  1. Parece bastante bueno por ahora, requiere reiniciar IntelliJ y luego reconstruir su proyecto.

Los mejores deseos :)


¿Tuviste maven o gradle? Tengo un problema para hacer que lombok funcione para un proyecto de varios módulos. Sigo recibiendo el error: 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 que estaba usando experta en ese momento, pero ahora usando Gradle lugar. En cuanto a su pregunta, espero que pueda comenzar una nueva pregunta específica para describir los detalles y hay muchos expertos que lo ayudarán;)
Hearen

no importa lo tengo que compilar ahora, gracias. Tuve algún conflicto en las dependencias módulo-núcleo se importó en el módulo de utilidades y el módulo de utilidades se importó en el módulo de núcleo que hizo un conflicto.
0x01Brain

8

Si ha marcado estos dos pasos de la siguiente manera

  1. Habilitar anotaciones: esta es una comprobación realizada en las preferencias de IntelliJ.
  2. Importar lombok en IntelliJ classPath (Preferencias -> Complementos)

y sigue recibiendo errores , compruebe el compilador , si es JAVAC o ECLIPSE .

Puede verificar el compilador en Preferencias -> Compilación, Ejecución, Implementación -> Compilador -> Compilador Java.

Cambie el compilador de uso a Javac (si es Eclipse). Esto es lo que funcionó para mí.


8

en la última versión de Gradle, debe usar annotationProcessor:

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

7

Como se indica aquí , cite: "Debe activar la opción del compilador externo y habilitar los procesadores de anotación o deshabilitar el compilador externo y deshabilitar todos los compiladores de anotación para que funcionen con lombok". Esto solucionó mi problema. Tenga en cuenta que agregué el complemento Scala antes de recibir este error, por lo que sospecho que el complemento cambió algunas de las configuraciones anteriores.


7

Hay un complemento para intellij. ver aquí: https://projectlombok.org/download.html


2
Este complemento se puede instalar en el menú Configuración / Complementos de Intellij. Asegúrese de tener instalado el último complemento. La actualización al último complemento funcionó para mí.
JasonM1

5

¿Tienes lombok como dependencia de tu proyecto? lombok.jar debe estar en el classpath durante la compilación del proyecto, que utiliza cualquiera de las anotaciones de lombok.


Resultó que falla dentro del procesador de anotaciones. Actualicé mi pregunta con el registro de salida.
experto

3

yo estaba en Mac

Esta es mi versión IntelliJ IDEA y Mac - IntelliJ IDEA 2017.1.5 Build # IU-171.4694.70 --- Mac OS X 10.12

Además de habilitar el procesamiento de anotaciones (marque la casilla de verificación) en estos 2 lugares.

1.) Intellij IDEA -> Preferencias -> Compilador -> Procesadores de anotaciones

.

2.) Archivo -> Otras configuraciones -> Configuración predeterminada -> Compilador -> Procesadores de anotación

Tuve que instalar el complemento Lombok también para que funcione.

3.) Intellij IDEA -> Preferencias -> Complementos -> Buscar repositorios-> Buscar "Lombok" -> instalar complemento -> Aplicar y reiniciar IDEA


2

Para aquellos de ustedes que todavía tienen problemas:

Además de los pasos anteriores de habilitar procesadores de anotaciones e instalar el complemento IntelliJ Lombok, también tuve que compilar -> Reconstruir proyecto.


2
También tuve que invalidar el caché y reiniciar antes de que Intellij dejara de quejarse.
Hans

2

1 、 instale el complemento lombok para IDEA

Idea Intellij -> Preferencias -> Complementos -> escriba lombok -> Buscar en repositorios -> instalar -> reiniciar IDEA

2 、 plugin config lombok

Habilitar el procesamiento de anotaciones lo hará funcionar

Pero si está en una Mac, asegúrese de habilitar el procesamiento de anotaciones en los siguientes dos lugares:

Idea Intellij -> Preferencias -> Compilación, Ejecución, Implementación -> Compilador -> Procesadores de anotaciones, marque la casilla de verificación "Habilitar el procesamiento de anotaciones". Archivo -> Otras configuraciones -> Configuración predeterminada -> Compilación, ejecución, implementación -> Compilador -> Procesadores de anotación, marque la casilla de verificación "Habilitar procesamiento de anotación".


No veo la configuración predeterminada en Otras configuraciones en IntelliJ. ¿Siguen presentes? Estoy usando la edición Ultimate - versión
11.03

1

No me funcionó con ninguna de las soluciones anteriores. Agregué <scope>provided</scope>a la dependencia en pom.xml y funcionó.

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

¿Qué versión de IntelliJ estás usando? Además, ¿qué versión de JDK?
realPK

1

Me he enfrentado a este problema después de actualizar IDEA a 2018.3. Tuve que actualizar todo el complemento existente


1

Después de probar todas las sugerencias aquí, también he encontrado otro tipo de solución. Parece que a veces IDEA no puede obtener procesadores del classpath del proyecto.

Entonces, en la pestaña de configuración Procesadores de anotación , debe especificar manualmente la ruta del procesador .


0

Tuve un problema similar al construir con JDK8, volví a configurar el proyecto en JDK7 y funcionó bien. Podría ser una versión anterior de Lombok que no se compilará bajo JDK8.


También tuve el mismo problema. Intente cambiar la versión de Lombok para que IntelliJ descargue la dependencia nuevamente.
Sanghyun Lee

0

Tuve el mismo problema, así que lo dejaré aquí para referencia futura de mi olvido.

Cuando Alt+Entering en @Slf4janotación por error me elegí importación válido. Entonces, si el código no se compila, asegúrese de importar:

import lombok.extern.slf4j.Slf4j;


0

FWIW: al configurar las anotaciones del compilador como se describe anteriormente, asegúrese de verificar también los perfiles que esté utilizando, como "procesadores de anotaciones predeterminados de Maven".


0

Puede suceder que incluso si lo tiene configurado correctamente y es visible entre las bibliotecas y en la lista de dependencias de Gradle, IntelliJ todavía no lo tiene en la ruta de clase. O está allí, pero configurado con un alcance diferente (por ejemplo, prueba en lugar de compilar).

Primero, asegúrese de tener el complemento instalado y el procesamiento de anotaciones habilitado, como se indica en otras respuestas.

Si todavía tiene una anotación no reconocida, coloque el cursor sobre ella, presione ALT + ENTRAR (u OPCIÓN + ENTRAR) y vea si tiene una opción de menú Add library: Gragle: org.projectlombok:lombok:VERSION to class path . Si puede verlo, elija este y puede resolver su problema.

Puede verificar la biblioteca y su alcance en: Configuración del proyecto / Módulos / pestaña Dependencias (busque lombok allí)



0

En mi caso, tenía todas las cosas mencionadas a continuación en su lugar y todavía no funcionaba.

  1. Tenía el complemento lombok instalado correctamente
  2. Procesadores de anotaciones, también marcados.
  3. Mi compilador de Java se configuró en JAVAC

Para solucionar mis problemas tuve que

  1. Actualice lombok a la última versión (v0.15) al 7 de octubre de 2017.
  2. Reinicie IntelliJ.
  3. Proyecto de reconstrucción.

Vea capturas de pantalla sobre cómo actualizar y reconstruir el proyecto a continuación.

Cómo actualizar lombok

Cómo reconstruir proyecto


0

Puede solucionarlo cannot find symbol variable logal usar lombok en IntelliJ IDEA 2017.1.3 haciendo esto:

Preferencias de IntelliJ> Compilación, ejecución, implementación> Procesadores de anotaciones> [Verificar] Habilitar el procesamiento de anotaciones> Aplicar


0

Instale el siguiente complemento y reinicie el IDE para resolver los errores:

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

Habilitar procesador de anotaciones:

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


0

Si las bibliotecas lombok están configuradas correctamente, como se mencionó anteriormente, haga clic en la anotación que no se compilaría, Alt-Enter, aparecerá una importación correcta y se compilará el código. - Me llevo un rato resolverlo. Lo puse aquí por si acaso la gente puede pasar por alto lo simple obvio.


0

Para los usuarios de Eclipse en MacOS, haga esto. Funcionó para mi.

  1. Copie lombok.jar en Eclipse.app/Contents/MacOS directorio.
  2. Añadir -javaagent:lombok.jar al final del archivo Eclipse.app/Contents/Eclipse/eclipse.ini.
  3. Reinicie Eclipse y habilite el "Procesamiento de anotaciones" en las propiedades del proyecto.

Haciendo referencia a esto


0

Además de lo mencionado en todas las respuestas, debo agregar el siguiente código en la configuración de pom.xml para que la instalación de mvn clean funcione. Antes de agregar este código que estaba obteniendo, no puedo encontrar el símbolo para captadores y establecedores.

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

0

Para mí lo que funcionó:

  1. Desinstalé el plugin de Lombok instalado recientemente
  2. Marqué "Habilitar complemento de anotación"
  3. Seleccioné "Obtener procesador del classpath del proyecto" en la misma página

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.