错误详情如图所示:
这个错误通常是因JDK 9及以上版本引入了模块系统,导致Lombok不能直接访问某些内部API。解决这个问题的方法之一是通过为Java编译器添加特定的模块导出选项。以下步骤可以帮助你解决这个问题:
-
修改编译选项:
你需要在编译时添加特定的JVM参数,让JDK将需要的包导出给未命名模块。具体的参数是:
--add-exports jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED如果你使用的是Maven,可以在你的
pom.xml文件中添加这些参数。具体的配置如下:<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <fork>true</fork> <compilerArgs> <arg>--add-exports</arg> <arg>jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg> </compilerArgs> </configuration> </plugin> </plugins> </build> -
如果你使用的是Gradle:
你可以在
build.gradle文件中配置Java编译任务,添加模块导出选项:tasks.withType(JavaCompile) { options.compilerArgs += [ '--add-exports', 'jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED' ] } -
更新Lombok版本:
确保你使用的是最新版本的Lombok,因为最新版本可能已经解决了这个问题。你可以在Lombok的GitHub页面或Maven中央仓库上找到最新版本。
-
JDK版本匹配 项目配置的JDK版本分别为:
Project Structure -> Project Setting -> Modules ->Dependencies -> Module SDKSettings -> Java Compiler -> Module
确保你的项目配置的JDK版本与实际使用的JDK版本匹配。
这样配置之后,当你运行mvn clean install或其他Maven编译命令时,编译器将使用指定的参数,从而解决Lombok与JDK模块化系统之间的兼容性问题。