java - 由于 Lombok 导致编译失败
问题描述
我有一个使用 gradle 作为构建工具和 lombok 的 springboot 应用程序。
当我运行./gradlew build
命令时,compileJava
任务失败并出现许多与 lombok 注释相关的消息。例子:
> Task :compileJava
\my\path\ResolverDelegator.java:12: error: cannot find symbol
import static com.business.lunch.dto.OfferContent.builder;
^
symbol: static builder
location: class OfferContent
\my\path\LunchOfferService.java:40: error: cannot find symbol
lunchOfferRepository.findByLocation(lunchOffer.getLocation())
^
symbol: method getLocation()
location: variable lunchOffer of type LunchOffer
\my\path\ResolverDelegator.java:60: error: cannot find symbol
return builder()
^
symbol: method builder()
location: class ResolverDelegator
...
> Task :compileJava FAILED
FAILURE: Build failed with an exception.
我的 gradle 包装器设置为使用 Gradle 6.1
distributionUrl=https\://services.gradle.org/distributions/gradle-6.1-bin.zip
Lombok 版本是 1.18.12,我提到我的文件中有以下dependencies
条目build.gradle
:
compileOnly 'org.projectlombok:lombok:1.18.12'
annotationProcessor 'org.projectlombok:lombok:1.18.12'
欢迎任何想法/建议。
解决方案
javac 中有一个关于静态导入生成的方法的已知错误。javac 得出结论,注释处理器无法错误地“修复”它,只会抛出错误。
解决方法是不要静态导入它:
import com.business.lunch.dto.OfferContent;
....
return OfferContent.builder();
编辑:免责声明:我是 Project Lombok 的核心贡献者。
推荐阅读
- linear-programming - 如何为这个问题编写 milp 方程?
- debugging - 调试颤振时如何打印出对象的整个私有值字符串
- css - Rvest,html_nodes 返回空列表和字符串,使用网站
- kubernetes - 如何从 kubernetes API 或其他方式获取 istio 对象状态(例如虚拟服务运行状态)?
- android - Koin Android:注入存储库时出现org.koin.error.NoBeanDefFoundException
- powershell - 如何将 PowerShell 模式从约束模式更改为全语言模式?
- sas - 为 SAS 中的所有观察值保留一个值
- php - 使用变量时php错误数组到字符串转换
- ios - iOS - AudioToolbox 内存泄漏
- c - 数组如何终止?