【问题标题】:NoSuchMethodError - Intellij and lombokNoSuchMethodError - Intellij 和 lombok
【发布时间】:2018-12-11 13:17:14
【问题描述】:

我在 IntelliJ 中遇到了一个奇怪的问题。我在 gradle 4 多模块项目中使用 Lombok (1.18.2)、IntelliJ(2018.2.2) 和 JUnit 5。

我花了几个小时来复制这个。

  1. 运行所有覆盖的测试用例。

  2. 下面会弹出来

  1. 如果我按 OK 并重新运行单元测试用例。对于 getter 和 setter,它将以 java.lang.NoSuchMethodError 开始失败。

  2. 删除 Lombok 并在此之后生成 getter 和 setter 也没有效果。

尝试了一切来解决这个问题(启用注释处理器、Lombok 插件、干净的构建)但没有运气。

编辑 1:

根 build.gradle:

implementation 'org.projectlombok:lombok:1.18.2'
testImplementation('org.junit.jupiter:junit-jupiter-api:5.3.1')
testImplementation('org.junit.jupiter:junit-jupiter-params:5.3.1')
testRuntime('org.junit.jupiter:junit-jupiter-engine:5.3.1')
testImplementation("org.junit.platform:junit-platform-launcher:1.3.1")
testImplementation("org.junit.vintage:junit-vintage-engine:5.3.1")
testImplementation "org.mockito:mockito-core:2.+"
testImplementation('org.mockito:mockito-junit-jupiter:2.22.0')

子项目 build.gradle

compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'

【问题讨论】:

  • 你能把你的build.gradle脚本中配置lombok依赖的部分贴出来吗?
  • 请看编辑。
  • 您可以尝试添加以下依赖项:testAnnotationProcessor "org.projectlombok:lombok:${lombokVersion}"testCompileOnly "org.projectlombok:lombok:${lombokVersion}" 吗? (和清理/重建项目)
  • 没有。它没有解决问题。 gradle 构建正在通过,但 Intellij 构建失败。
  • 你有没有得到这个?现在影响到我了。我设法通过在 Gradle/Runner 首选项窗格中关闭“将 IDE 构建/运行操作委托给 gradle”来使其工作

标签: gradle intellij-idea lombok junit5 intellij-lombok-plugin


【解决方案1】:

我通过以下更改解决了这个问题:

1:在 Intellij 中启用注释处理。(文件 | 设置 | 构建、执行、部署 | 编译器 | 注释处理器)

2:选择处理器路径并指向 lombok-1.18.4.jar,因为我只想为 Lombok 而不是 Mapstruct 启用它。如果两者都启用,则它会在默认位置生成 Mapstruct 类。

3:在文件“使缓存无效并重新启动”下

4:在构建选项“重建项目”下

这将解决它。我花了一段时间才让它在 Intellij 中工作。

【讨论】:

  • 这是一个很好的答案。它有效
猜你喜欢
  • 2020-02-07
  • 2020-07-02
  • 1970-01-01
  • 2012-10-16
  • 1970-01-01
  • 2017-08-12
  • 2020-11-19
  • 2020-07-23
  • 1970-01-01
相关资源
最近更新 更多