Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

2.4K
Vistas
java.lang.IllegalAccessError: la clase lombok.javac.apt.LombokProcessor no puede acceder a la clase com.sun.tools.javac.processing.JavacProcessingEnvironment

Soy algo nuevo en la codificación y estoy tratando de usar el complemento Lombok para crear automáticamente Getters/Setters, etc. para mis campos de una clase específica. Al hacerlo, recibo el siguiente error:

El error:

java: java.lang.IllegalAccessError: la clase lombok.javac.apt.LombokProcessor (en el módulo sin nombre @ 0x3b67ef9b) no puede acceder a la clase com.sun.tools.javac.processing.JavacProcessingEnvironment (en el módulo jdk.compiler) porque el módulo jdk.compiler sí lo hace no exportar com.sun.tools.javac.processing a un módulo sin nombre @ 0x3b67ef9b

Después de buscar un poco en línea, descubrí que este error está relacionado con un problema en OpenJDK 15, pero actualmente estoy usando OpenJDK 16, por lo que estoy confundido porque todavía recibo este error.

Este hilo afirma tener una solución: https://github.com/rzwitserloot/lombok/issues/2681#issuecomment-748616687 pero después de implementar el complemento, no parece haber ninguna diferencia y sigo recibiendo el error.

Lo más probable es que haya cometido un error trivial ya que soy un principiante, pero si alguien sabe lo que me estoy perdiendo, hágamelo saber.

Clase usando @Data (Lombok):

 import lombok.Data; @Data public class Ingredient { private final String id; private final String name; private final Type type; public enum Type { WRAP, PROTEIN, VEGGIES, CHEESE, SAUCE } }

Mi archivo pom:

 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.4</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>sia</groupId> <artifactId>taco-cloud</artifactId> <version>0.0.1-SNAPSHOT</version> <name>taco-cloud</name> <description>Taco Cloud Project</description> <properties> <java.version>16</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

@ FrankyFred ha proporcionado una solución temporal para poder usar Lombok: https://stackoverflow.com/a/66981165/12586904


En lo que respecta a mi investigación y las diversas respuestas que recibí a esta pregunta, parece que actualmente no hay una forma posible de ejecutar Lombok en OpenJDK 16 . Como tal, una alternativa al uso de Lombok es colocar los métodos @data manualmente en su código. El siguiente enlace explica brevemente cómo hacer esto en caso de que sea nuevo en este tema: https://javabydeveloper.com/lombok-data-annotation/#:~:text=Lombok%20Data%20annotation%20(%20%40Data %20),como%20bien%20como%20a%20constructor.

Ejemplo de pseudocódigo que representa lo que realmente representa @Data :

 @Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode public class User1 { private Long id; private String username; }

La anotación Lombok @Data minimiza el uso de más anotaciones cuando necesita generar los siete requisitos anteriores, pero básicamente logran los mismos objetivos cuando se ejecuta el código.

De ninguna manera soy un experto en esto, pero con suerte, esto ayudará a cualquier otra persona que se quede atascada usando Lombok pero necesite encontrar una alternativa ya que su libro/tutorial podría utilizarlo y todavía le gustaría continuar con el libro/tutorial.

over 4 years ago · Santiago Trujillo Denunciar

0

Parece que se puede resolver agregando un complemento en pom.xml

 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>16</source> <target>16</target> <!-- <release>16</release>--> <fork>true</fork> <compilerArgs> <arg>--enable-preview</arg> <arg>-Xlint:all</arg> <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED</arg> <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED</arg> <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED</arg> <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED</arg> <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED</arg> <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED</arg> <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg> <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg> <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED</arg> <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.jvm=ALL-UNNAMED</arg> </compilerArgs> <!--for unmappable characters in classes--> <encoding>UTF-8</encoding> <showDeprecation>true</showDeprecation> <showWarnings>true</showWarnings> <!--for lombok annotations to resolve--> <!--contradictory to maven, intelliJ fails with this--> <annotationProcessorPaths> <path> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.16</version> </path> </annotationProcessorPaths> </configuration> </plugin>

solución del acceso de Lombok a los paquetes internos de jdk.compiler incompatibles con Java-16

over 4 years ago · Santiago Trujillo Denunciar

0

Cambie al menos a la versión 1.18.22 de Lombok que contiene la corrección

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

Para ver la última versión de lombok, siga este enlace en search.maven.org

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda