Java - SpringBoot Maven打包失败报错:class lombok.javac.apt.LombokProcessor (in unnamed module @0x7cxx)

43 篇文章 3 订阅
36 篇文章 3 订阅

最近项目部署的时候,出现了一个maven打包失败的问题,报:class lombok.javac.apt.LombokProcessor错误,错误如下:

class lombok.javac.apt.LombokProcessor (in unnamed module @0x7c523bdd) 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 @0x7c523bdd

错误原因

这个错误通常是因JDK 9及以上版本引入了模块系统,导致Lombok不能直接访问某些内部API。解决这个问题的方法之一是通过为Java编译器添加特定的模块导出选项

解决方案

1、修改编译选项

在编译时添加特定的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>

2、如果你使用的是Gradle

你可以在build.gradle文件中配置Java编译任务,添加模块导出选项:

tasks.withType(JavaCompile) {
    options.compilerArgs += [
        '--add-exports', 'jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED'
    ]
}

3、更新Lombok版本

确保你使用的是最新版本的Lombok,因为最新版本可能已经解决了这个问题。你可以在Lombok的GitHub页面Maven中央仓库上找到最新版本。

我的lombok版本如下:

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

将lombok升级到1.18.20或以上即可 

4、JDK版本匹配

项目配置的JDK版本分别为:

  • Project Structure -> Project Setting -> Modules ->Dependencies -> Module SDK
  • Settings -> Java Compiler -> Module
    ​​​​​​​确保你的项目配置的JDK版本与实际使用的JDK版本匹配。

这样配置之后,当你运行mvn clean install或其他Maven编译命令时,编译器将使用指定的参数,从而解决Lombok与JDK模块化系统之间的兼容性问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值