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

如何解决Java19+Lombok1.18.20下JCTree$JCImport的NoSuchFieldError错误?

解决Java 19 + Lombok 1.18.20 引发的NoSuchFieldError问题

这个报错确实是Java版本和Lombok版本不兼容导致的——JDK 19对com.sun.tools.javac.tree.JCTree$JCImport的内部字段做了调整,而Lombok 1.18.20还在用旧的字段名,所以找不到对应字段。不用升级到JDK21的话,有两种靠谱的修复方式:

方法一:升级Lombok到兼容Java 19的版本

Lombok从1.18.22版本开始正式支持Java 19,直接把Lombok版本升到1.18.22及以上(比如1.18.30这种稳定版)就能彻底解决问题。

Maven配置示例

修改pom.xml里的Lombok依赖版本:

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.30</version>
    <scope>provided</scope>
</dependency>

同时记得更新maven-compiler-plugin的版本,确保它能适配Java 19:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.10.1</version>
    <configuration>
        <source>19</source>
        <target>19</target>
    </configuration>
</plugin>

Gradle配置示例

修改build.gradle(或build.gradle.kts)里的Lombok版本:

dependencies {
    compileOnly 'org.projectlombok:lombok:1.18.30'
    annotationProcessor 'org.projectlombok:lombok:1.18.30'
}

方法二:添加编译时JVM参数(临时方案)

如果暂时不想升级Lombok,可以通过添加JVM参数让Lombok能访问JDK 19的内部API,绕开字段名不匹配的问题。

Maven配置

在maven-compiler-plugin里添加compilerArgs:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.10.1</version>
    <configuration>
        <source>19</source>
        <target>19</target>
        <compilerArgs>
            <arg>--add-opens</arg>
            <arg>jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg>
            <arg>--add-opens</arg>
            <arg>jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED</arg>
            <arg>--add-opens</arg>
            <arg>jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED</arg>
        </compilerArgs>
    </configuration>
</plugin>

Gradle配置

在build.gradle的compileJava任务里添加参数:

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

注意:这个方法只是临时 workaround,长期来看还是升级Lombok版本更稳妥,因为后续JDK版本的内部API可能还会变化,旧版本Lombok可能会出现新的兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 08:40:10