在使用Kapt3时,当我尝试使用Lombok运行Java/Kotlin应用程序时:
apply plugin: 'kotlin-kapt'大量javac编译失败
error: cannot find symbol对于生成的方法。
这可能是由于kapt无法生成存根造成的:
'kapt.generateStubs' is not used by the 'kotlin-kapt' plugin上述所有情况都迫使我在可以使用的地方使用老kapt:
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)中的情况是一样的。
发布于 2018-01-03 09:37:12
正如@yanex在评论中所解释的:
不幸的是,Kotlin与Lombok不兼容,因为它在工作中使用了私有的javac。虽然kapt3构建在Java编译器之上,但是kapt为Kotlin类生成Java,所以Lombok过程是存根,而不是原始类。顺便说一句,原来的kapt被废弃了,在Kotlin 1.2版本发布后不久就会被删除。因此,您有一些时间迁移到Kotlin & kapt3。
发布于 2022-04-25 15:39:41
https://stackoverflow.com/questions/46950837
复制相似问题