java - 由于Lombok导致编译失败

标签 java spring-boot gradle lombok

我有一个 springboot 应用程序,使用 gradle 作为构建工具,还有 lombok。

当我运行 ./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,我提到我的 build.gradle 文件中的 dependency block 中有以下条目:

    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 的核心贡献者。

关于java - 由于Lombok导致编译失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60127458/

相关文章:

java - 将IP从服务器发送到客户端。 Java网络

java - 在 Java 中获取 Unicode 值的字符表示形式

spring-boot - 如何浏览器测试模拟 API 调用的 Vue.js 应用程序?

java - 作为 jar 运行时找不到类路径资源

gradle - 我应该如何为 Travis CI 配置 Gradle Android 库

java - Spring Boot中的ObjectMapper可以读取字符串,但在解析 header 时不起作用

java - Spring @Controller 和 Transactionmanager

java - 在 Spring Boot 2.4 中用我的配置文件 dev 覆盖属性

java - App Engine爆炸了Gradle的war文件夹问题

java - 如果afterClass方法失败,Gradle测试报告将显示测试失败