2017-10-09 75 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'