错误:无法访问NotNull
我在编译时遇到上面的错误,而且没有去任何源文件。 在慢慢识别出导致问题的变化后,发现这显然是匕首2注入造成的问题。
@FragmentScope @Subcomponent public interface MyComponent { void inject(MyJavaFragment myJavaFragment); void inject(MyJavaClass myJavaClass); void inject(MyKotlinClass myKotlinClass); // <- if change to Java, all works }
我从Java代码转换MyKotlinClass到Kotlin,并且发生错误。 这是在一个库中,我已经在build.gradle中使用它
kapt "com.google.dagger:dagger-compiler:$daggerVersion"
为什么? (注意:应用程序代码最初是Java,所以除非需要,所以我没有全部改为Kotlin)。
经过长时间的调查,发现,对这个库的调用Feature,仍然使用Java Annotation
annotationProcessor "com.google.dagger:dagger-compiler:$daggerVersion"
但是我的图书馆正在使用kapt
提到的问题中提到的kapt
。 所以这是一个使用注释处理器的冲突,而我注意到使用了Java注释处理器。 通过改变调用库注释处理器
kapt "com.google.dagger:dagger-compiler:$daggerVersion"
会解决问题。 (记得在顶部添加apply plugin: 'kotlin-kapt'
)
- Kotlin和Dagger2
- Android – Kotlin – 匕首 – 没有这样的方法例外
- @Inject设置不注入属性
- 在混合Java / Kotlin项目中使用Dagger 2的Maven配置
- Kotlin Kapt:java.lang.IllegalStateException:endPosTable已经设置
- AndroidInjector <android.app.Activity>不能提供@ Provide或者@ Produces注解的方法
- Android Dagger:我无法提供没有@Inject构造函数的外部类
- 未解决的参考匕首2 + kotlin + android gradle
- Android Kotlin Gson缓慢的Json反序列化