2017-10-09 73 views
1

编译时遇到上述错误,并且它不会传递给任何源文件。在慢慢识别导致问题的变化后,发现它显然是匕首2注射引起的问题。错误:无法访问NotNull

@FragmentScope 
@Subcomponent 
public interface MyComponent { 
    void inject(MyJavaFragment myJavaFragment); 

    void inject(MyJavaClass myJavaClass); 

    void inject(MyKotlinClass myKotlinClass); // <- if change to Java, all works 
} 

我将MyKotlinClass从Java代码转换为Kotlin,并且发生错误。这是在库中,我已经在build.gradle中使用它

kapt "com.google.dagger:dagger-compiler:$daggerVersion" 

为什么? (注意:应用程序代码最初是Java,所以除非需要,所以我没有全部更改为Kotlin)。

回答

2

长时间的调查后,发现原来的通话功能到该库,还是使用Java注释

annotationProcessor "com.google.dagger:dagger-compiler:$daggerVersion" 

但正如上面提到的问题我的图书馆使用kapt。所以这是所使用的注释处理器的冲突,而我怀疑是使用了Java注释处理器。通过将调用库注释处理器更改为

kapt "com.google.dagger:dagger-compiler:$daggerVersion" 

将解决该问题。 (记得在顶部加apply plugin: 'kotlin-kapt'