NoSuchMethodError-Intellij和龙目岛

时间:2018-12-11 13:17:15

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

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

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

1)运行具有覆盖率的所有测试用例。

2)将弹出一个弹出窗口

enter image description here

3)如果我按OK并重新运行单元测试用例。对于获取器和设置器,它会因 java.lang.NoSuchMethodError 而失败。

4)删除Lombok并在此之后生成getter和setter也没有作用。

尝试了所有方法来解决此问题(启用注释处理器,lombok插件,干净的构建),但没有运气。

编辑1:

root 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'

1 个答案:

答案 0 :(得分:2)

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

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

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

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

4:在Build选项“ Rebuild project”下

这将解决它。我花了一些时间才能在Intellij中使用它。