NoSuchMethodError - Intellij 和 lombok
NoSuchMethodError - Intellij and lombok
我在 IntelliJ 中遇到了一个奇怪的问题。我在 gradle 4 多模块项目中使用 Lombok (1.18.2)、IntelliJ(2018.2.2) 和 JUnit 5。
我花了几个小时来复制这个。
运行 覆盖所有测试用例。
下面会弹窗
如果我按确定并重新运行单元测试用例。对于 getters 和 setters,它会以 java.lang.NoSuchMethodError 开始失败。
删除 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'
我通过进行以下更改解决了这个问题:
在 Intellij 中启用注释处理。(文件 | 设置 | 构建、执行、部署 | 编译器 | 注释处理器)
select 处理器路径并指向 lombok-1.18.4.jar 因为我只想为 Lombok 而不是 Mapstruct 启用它。如果两者都启用,则它会在默认位置生成 Mapstruct 类。
在文件“使缓存无效并重新启动”下
在构建选项“重建项目”下
这将解决它。我花了一段时间才让它在 Intellij 中工作。
我在 IntelliJ 中遇到了一个奇怪的问题。我在 gradle 4 多模块项目中使用 Lombok (1.18.2)、IntelliJ(2018.2.2) 和 JUnit 5。
我花了几个小时来复制这个。
运行 覆盖所有测试用例。
下面会弹窗
如果我按确定并重新运行单元测试用例。对于 getters 和 setters,它会以 java.lang.NoSuchMethodError 开始失败。
删除 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'
我通过进行以下更改解决了这个问题:
在 Intellij 中启用注释处理。(文件 | 设置 | 构建、执行、部署 | 编译器 | 注释处理器)
select 处理器路径并指向 lombok-1.18.4.jar 因为我只想为 Lombok 而不是 Mapstruct 启用它。如果两者都启用,则它会在默认位置生成 Mapstruct 类。
在文件“使缓存无效并重新启动”下
在构建选项“重建项目”下
这将解决它。我花了一段时间才让它在 Intellij 中工作。