You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级到Java 17后Maven编译报错,与Lombok相关如何解决?

错误诱因

Java 9引入的模块系统对JDK内部非公开API做了访问限制,你当前使用的1.18.12版本Lombok发布时间较早,未适配Java 17的模块访问规则,运行时需要调用jdk.compiler模块下的内部类com.sun.tools.javac.processing.JavacProcessingEnvironment,Java 11对该类访问的限制较宽松,升级到Java 17后权限收紧,直接触发IllegalAccessError。

解决方案

优先选择方案一,无需额外配置即可彻底解决问题:

  • 方案一:升级Lombok到适配Java 17的版本
    将pom.xml中lombok.version属性值修改为1.18.22及以上的稳定版本即可,推荐使用最新稳定版1.18.30,该系列版本已经原生兼容Java 17的模块权限规则。

  • 方案二:手动开放JDK内部类访问权限(仅适用于暂时无法升级Lombok版本的场景)
    修改maven-compiler-plugin的配置,新增编译参数手动开放对应内部类的访问权限,修改后的配置如下:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>${maven-compiler-plugin.version}</version>
  <configuration>
    <source>${maven.compiler.source}</source>
    <target>${maven.compiler.target}</target>
    <compilerArgs>
      <arg>--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg>
      <arg>--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED</arg>
      <arg>--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg>
      <arg>--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED</arg>
      <arg>--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED</arg>
      <arg>--add-exports=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED</arg>
      <arg>--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED</arg>
      <arg>--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED</arg>
    </compilerArgs>
  </configuration>
</plugin>

内容的提问来源于stack exchange,提问作者alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 11:24:03