尝试使用 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()
}
}
问题出在 gradle 插件上。我正在用另一个可以满足我的 lombok 需求的替换。
io.franzbecker.gradle-lombok
要使用 lombok 插件设置 lombok 版本, 按照文档,您应该设置如下
lombok {
version("1.18.30")
}
而且应该不需要设置类似的东西。
compileOnly('org.projectlombok:lombok:1.18.30')