pom parseable non java maven lombok

java - parseable - Maven build no puede encontrar el símbolo al acceder a los métodos anotados de lombok del proyecto,



lombok project java (10)

Estoy usando el proyecto lombok por primera vez y tengo problemas para compilar el proyecto a través de maven cuando ejecuto la compilación Recibo errores cuando se llaman métodos anotados con anotaciones del proyecto lombok.

Este es el parámetro anotado:

private @Getter @Setter String paymentNonce = null;

y en esta línea, por ejemplo, el experto rompe la construcción:

if (!StringUtilities.isNullOrEmpty(getPaymentNonce())) {

esta es mi dependencia maven

<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.4</version> </dependency>

El error de Maven:

[INFO] Compiling 158 source files to C:/java/repos/luna/cloudflow/cloudflow-ejb/target/classes [INFO] ------------------------------------------------------------- [ERROR] COMPILATION ERROR : [INFO] ------------------------------------------------------------- [ERROR] /java/repos/luna/cloudflow/cloudflow-ejb/src/main/java/si/arctur/controller/PaymentProcessor.java:[94,38] error: cannot find symbol [ERROR] /java/repos/luna/cloudflow/cloudflow-ejb/src/main/java/si/arctur/controller/PaymentProcessor.java:[97,106] error: cannot find symbol [ERROR] /java/repos/luna/cloudflow/cloudflow-ejb/src/main/java/si/arctur/controller/PaymentProcessor.java:[142,2] error: cannot find symbol [ERROR] /java/repos/luna/cloudflow/cloudflow-ejb/src/main/java/si/arctur/controller/ShoppingCart.java:[27,6] error: cannot find symbol [ERROR] /java/repos/luna/cloudflow/cloudflow-ejb/src/main/java/si/arctur/controller/ShoppingCart.java:[32,75] error: cannot find symbol .....

Estoy usando java 8


¿Podría ser que hayas especificado -proc:none o los procesadores de anotación especificados explícitamente usando -processor <processorclass> en tu compilación de java (javac)?


De hecho, pude resolver esto siguiendo una respuesta publicada aquí:

MapStruct y Lombok no trabajan juntos

Básicamente tuve que agregar lombok a la maven-compiler-plugin <annotationProcessorPaths>


En mi caso, se resolvió mediante la actualización de JDK (era 1.8.0_66, ahora 1.8.0_92)


En resumen, actualizar maven-compiler-plugin a 2.4 , o rebajar lombok a menos de 1.14.* .

Parece que maven-compiler-plugin por debajo de 2.4 no admite javax.annotation.processing.Processor con un nombre con $ .

Actualización: puede configurar maven-compiler-plugin to fork , o actualizar plexus-compiler-javac a 1.8.6 . ( maven-compiler-plugin 2.3.2 requiere 1.8.1 , y 2.4 requiere 1.8.6 )

Desde 1.16 , lombok usa ShadowClassLoader , que impide la promoción de IDE para la clase interna de lombok. Sin embargo, no usa ShadowClassLoader si el cargador de clases es org.codehaus.plexus.compiler.javac.IsolatedClassLoader . (No sé por qué los chicos lombok usan código duro para resolver otro problema relacionado con plexus-compiler-javac ).

maven-compiler-plugin 2.4 , o mejor dicho, plexus-compiler-javac 1.8.6 , no usa org.codehaus.plexus.compiler.javac.IsolatedClassLoader , así que vuelve a funcionar.


He bajado la versión de lombok a 1.14.8 esta versión funciona con maven build, no he encontrado por qué la versión 1.16 verson no funciona :(


Mi solución fue prefijar la anotación con el nombre del paquete lombok.

@lombok.Builder @lombok.experimental.Accessors(prefix = "m", chain = true)

más bien que

@Builder @Accessors(prefix = "m", chain = true)


Si está utilizando las anotaciones lombok en clases estáticas, en ese caso tendrá que mencionar el nombre completo de la clase, es decir. En lugar de @Data a @lombok.Data . Esto ha funcionado para mí.


Si está utilizando métodos estáticos relacionados con Lombok (principalmente @Builder) con importaciones estáticas, puede experimentar problemas similares (¡incluso en otras partes de su código!).

Hay un problema abierto al respecto: https://github.com/rzwitserloot/lombok/issues/979

La solución actual es simplemente no usar importaciones estáticas, por ejemplo, cambios

import static my.org.Foo.FooBuilder ... FooBuilder builder = Foo.builder();

a:

Foo.FooBuilder builder = Foo.builder(); // note >>Foo.<<FooBuilder; without static import


Tuvo el mismo problema al usar maven-compiler-plugin v.2.3.2 Después de actualizar la versión hasta 3.5, el problema desapareció

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.5</version> <configuration> ... </configuration> </plugin>

Espero que esto ayude


intente especificar el parámetro para el módulo "lombok" dentro de las dependencias. Me enfrenté al mismo problema y lo resolví por este trabajo.