lombok 1.18.30、java 21 和 java 17 出现 java.lang.IllegalAccessError

问题描述 投票:0回答:2

尝试使用 gradle 编译时出现以下错误。

java.lang.IllegalAccessError: class lombok.javac.apt.LombokProcessor (in unnamed module @0x44492a8a) 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 @0x44492a8a

我见过一些关于人们在使用早期版本的 lombok 时遇到此问题的帖子,解决方案就是升级到最新版本。好吧,我正在使用最新的 lombok,但仍然收到此错误。我尝试过 java 21 和 java 17,结果相同——它只适用于 java 8。我也尝试了几个不同版本的 gradle,尽管只有 8.5 应该与 java 21 兼容。

有什么解决办法吗?

编辑:

我的build.gradle配置的相关部分:

compileOnly('org.projectlombok:lombok:1.18.30')
apply plugin: 'io.franzbecker.gradle-lombok'

import io.franzbecker.gradle.lombok.task.DelombokTask

task delombok(type: DelombokTask, dependsOn: compileJava) {
    ext.outputDir = file("$buildDir/delombok")
    outputs.dir(outputDir)
    sourceSets.main.java.srcDirs.each {
        inputs.dir(it)
        args(it, "-d", outputDir)
    }
    doFirst {
        outputDir.deleteDir()
    }
}

java gradle lombok java-21
2个回答
0
投票

问题出在 gradle 插件上。我正在用另一个可以满足我的 lombok 需求的替换。

io.franzbecker.gradle-lombok


0
投票

要使用 lombok 插件设置 lombok 版本, 按照文档,您应该设置如下

lombok {
    version("1.18.30")
}

而且应该不需要设置类似的东西。

compileOnly('org.projectlombok:lombok:1.18.30')

© www.soinside.com 2019 - 2024. All rights reserved.