class lombok.javac.apt.LombokProcessor (in unnamed module @0x7d21852b) cannot access class com.sun.tools.javac.processing.JavacProcessingEnvironment (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.processing to unnamed module @0x7d21852b
1、错误的原因
这个错误通常表示在使用 Lombok 时,存在 模块访问限制 的问题。
这个错误信息表明在使用 Lombok 库时,遇到了 模块访问权限 的问题。
这个错误是 由于 Java模块系统(从Java 9 开始引入)的 封装性 导致的。
具体来说,Lombok 处理器(
LombokProcessor
)所在的未命名模块无法访问jdk.compiler
模块中的com.sun.tools.javac.processing.JavacProcessingEnvironment
类,因为jdk.compiler
模块没有将该类导出到未命名模块。错误表明
lombok.javac.apt.LombokProcessor
这个类试图访问jdk.compiler
模块中的com.sun.tools.javac.processing.JavacProcessingEnvironment
类,但是jdk.compiler
模块并没有将其com.sun.tools.javac.processing
包导出给无名模块(即你的应用或库)。
- 这些引用都是关于Java编译器插件Lombok的错误信息。Lombok是一个Java库,它通过注解来简化Java代码的编写。这些错误信息都是由于Lombok与Java编译器之间的兼容性问题导致的。具体来说,这些错误信息都是由于Java编译器模块化所引起的。在Java 9及以上版本中,Java编译器被分成了多个模块,其中一些模块不再公开某些API,这可能会导致Lombok无法访问这些API并导致编译错误。
- 解决这些问题的方法是更新Lombok版本或者更新Java编译器版本。如果您正在使用Maven,则可以尝试将Maven编译器插件版本更新到最新版本。此外,您还可以尝试在Maven构建中添加以下依赖项来解决这些问题:
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.20</version> <scope>provided</scope> </dependency>
- 这将确保在编译时Lombok库可用,并且不会导致与Java编译器之间的兼容性问题。
- 打包之前本人用的是 1.18.10 版本
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.10</version> <scope>compile</scope> </dependency>
2、解决办法
- 版本换成 1.18.20 即可
完成上述修改后,请清理并重新构建项目以验证问题是否已解决。