错误:无法访问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'