如何与Kapt3一起使用lombok
当我尝试使用Kapt3运行Java和Kotlin android应用程序时:
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 }
然而这在测试编译期间导致失败,因为我也使用数据绑定库:
出了什么问题:执行任务失败:app:compileXDebugUnitTestJavaWithJavac’。 java.lang.RuntimeException:无法解析数据绑定编译器选项。 参数:kapt.annotations:… \ app \ build \ tmp \ kapt \ xDebugUnitTest \ wrappers \ annotations.bscplayDebugUnitTest.txt kapt.kotlin.generated:… \ app \ build \ tmp \ kapt \ xDebugUnitTest \ kotlinGenerated
另一方面,这迫使我使用Kapt3,如下所述: android databinding unit test error无法解析数据绑定编译器选项。
有谁知道如何解决这个问题与龙目岛? 我只是暗示使用我的第一个解决方案,但它导致了数据绑定问题(根据Kotlin支持·问题#1169·rzwitserloot / lombok·GitHub )
注意:Android studio 2.3.3和Android Studio 3(使用gradle build tools 3.0.0)的情况是一样的。
正如@yanex在评论中所解释的那样:
不幸的是,Kotlin与Lombok不兼容,因为它使用私有的javac API来完成它的工作。 尽管kapt3构建在Java编译器之上,但kapt为Kotlin类生成Java存根,因此Lombok可以处理的是存根,而不是原始类。 顺便说一下,原来的kapt已经被弃用,在Kotlin 1.2发布之后不久就会被移除。 所以你有一些时间迁移到Kotlin&kapt3。
- 如何在Retrofit 2中打印漂亮的照片?
- 我可以构建这个测验客户端应用程序吗?
- 将线性转换为网格布局
- 如何实现一个延迟加载recyclerView适配器,像使用kotlin的realm recyclerView适配器
- 获取正文从错误响应中使用execute()进行Retrofit
- 如何在Kotlin for Android上使用“setTextColor(hexaValue)”,
- android studio 3.0中的Kotlin-android和kotlin-android-extensions之间的区别
- 在Android模拟器上调用REST API会导致应用程序崩溃
- Kotlin:ProGuard擦除属性属性