Ely*_*lye 3 java kotlin dagger-2
我在编译时遇到上述错误,并且它没有转到任何源文件。在慢慢识别导致问题的更改后,发现显然是 dagger 2 注入导致了问题。
@FragmentScope
@Subcomponent
public interface MyComponent {
void inject(MyJavaFragment myJavaFragment);
void inject(MyJavaClass myJavaClass);
void inject(MyKotlinClass myKotlinClass); // <- if change to Java, all works
}
Run Code Online (Sandbox Code Playgroud)
我将 MyKotlinClass 从 Java 代码转换为 Kotlin,然后发生错误。这是在一个库中,我已经在 build.gradle 中使用它
kapt "com.google.dagger:dagger-compiler:$daggerVersion"
Run Code Online (Sandbox Code Playgroud)
为什么?(注意:应用程序代码最初是 Java,所以除非需要,否则我还没有将其全部更改为 Kotlin)。
经过长时间的调查,发现这个库的Feature调用,仍然使用Java Annotation
annotationProcessor "com.google.dagger:dagger-compiler:$daggerVersion"
Run Code Online (Sandbox Code Playgroud)
但我的图书馆正在使用kapt上述问题中提到的内容。所以这是所使用的注释处理器的冲突,我怀疑是使用了 Java 注释处理器。通过将调用库注释处理器更改为
kapt "com.google.dagger:dagger-compiler:$daggerVersion"
Run Code Online (Sandbox Code Playgroud)
就能解决问题。apply plugin: 'kotlin-kapt'(记得也要在顶部添加)
| 归档时间: |
|
| 查看次数: |
792 次 |
| 最近记录: |