Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

470
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!