首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Kapt3中使用lombok

如何在Kapt3中使用lombok
EN

Stack Overflow用户
提问于 2017-10-26 09:37:27
回答 2查看 1.2K关注 0票数 3

在使用Kapt3时,当我尝试使用Lombok运行Java/Kotlin应用程序时:

代码语言:javascript
复制
apply plugin: 'kotlin-kapt'

大量javac编译失败

代码语言:javascript
复制
error: cannot find symbol

对于生成的方法。

这可能是由于kapt无法生成存根造成的:

代码语言:javascript
复制
  'kapt.generateStubs' is not used by the 'kotlin-kapt' plugin

上述所有情况都迫使我在可以使用的地方使用老kapt:

代码语言:javascript
复制
compileOnly "org.projectlombok:lombok:$lombokVer"
annotationProcessor "org.projectlombok:lombok:$lombokVer"
kapt "org.projectlombok:lombok:$lombokVer"

kapt {
    generateStubs = true
}

但是,这会导致在测试编译期间失败,因为我还使用了数据库库:

哪里出了问题:任务的执行失败了:compileXDebugUnitTestJavaWithJavac‘。java.lang.RuntimeException:无法解析数据绑定编译器选项。Params:...\app\build\tmp\kapt\xDebugUnitTest\wrappers\annotations.bscplayDebugUnitTest.txt kapt.kotlin.generated:...\app\build\tmp\kapt\xDebugUnitTest\kotlinGenerated

另一方面,这迫使我使用Kapt3,如下所述:android数据库单元测试错误无法解析数据绑定编译器选项。

,有人知道如何用Lombok?来解决这个问题吗?--我只是暗示要使用我的第一个解决方案,但是它会导致绑定问题(按照Kotlin Support·问题#1169·rzwitserloot/lombok·GitHub)。

注意:在AndroidStudio2.3.3和Android 3(使用gradle build 3.0.0)中的情况是一样的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-03 09:37:12

正如@yanex在评论中所解释的:

不幸的是,Kotlin与Lombok不兼容,因为它在工作中使用了私有的javac。虽然kapt3构建在Java编译器之上,但是kapt为Kotlin类生成Java,所以Lombok过程是存根,而不是原始类。顺便说一句,原来的kapt被废弃了,在Kotlin 1.2版本发布后不久就会被删除。因此,您有一些时间迁移到Kotlin & kapt3。

票数 0
EN

Stack Overflow用户

发布于 2022-04-25 15:39:41

在您的build.gradle中,添加以下内容:

代码语言:javascript
复制
kapt {
    keepJavacAnnotationProcessors = true
}

有关更多信息,请访问JetBrains Kotlin文档

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46950837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档