[英]Dagger Annotation Processor fails to find com/google/common/collect/SetMultimap
我負責將Dagger集成到我們現有的項目中,而Dagger注釋處理器存在一些問題。
我的環境受到嚴格限制,因此我不能僅使用jcenter()甚至Google Maven來獲取依賴項。 我們有一個內部常春藤倉庫,用於存儲和管理我們的所有依賴項。
也就是說,我已經撤消了Dagger所需的所有依賴關系,但仍然存在問題。 Gradle同步成功完成並解決了依賴性,但是當我進行構建時,出現以下錯誤。
錯誤:服務配置文件錯誤,或在構造Processor對象時拋出異常:javax.annotation.processing.Processor:提供程序dagger.internal.codegen.ComponentProcessor無法實例化:java.lang.NoClassDefFoundError:com / google / common / collect / SetMultimap
顯然,我缺少依賴項,因為當我專門指定並允許jcenter()和Google Maven作為存儲庫時,可以出於測試目的進行此操作,但是為了創建產品,這是不允許的,因此我可以毫無例外地進行構建。
現在,對錯誤的嚴格閱讀告訴我Dagger無法找到com.google.comm.collect.SetMutliMap。
我已經進行了很多搜索,試圖找到這種依賴關系,而我所能找到的就是該文件是Guava的一部分,或者至少是它的某些功能。
要注意的一件事是我正在使用以下版本的gradle:
classpath 'com.android.tools.build:gradle:3.0.0'
這是我在較早版本的build.gradle中的匕首依賴項:
//Dagger
compile 'com.google.dagger:dagger:2.10'
annotationProcessor 'com.google.dagger:dagger-compiler:2.10'
其他依賴項:
//lifecycle libs
compile "android.arch.lifecycle:runtime:1.0.3"
compile "android.arch.lifecycle:extensions:1.0.0"
annotationProcessor "android.arch.lifecycle:compiler:1.0.0"
compile 'de.greenrobot:eventbus:2.4.1'
compile 'org.apache.commons:commons-lang3:3.4'
compile 'commons-io:commons-io:2.4'
compile 'com.android.support:multidex:1.0.1'
compile 'com.android.support:support-v4:26.1.0'
compile 'com.android.support:design:26.1.0'
compile 'com.github.ganfra:material-spinner:2.0.0'
compile 'com.nulab-inc:zxcvbn:1.1.3'
compile('com.google.android.gms:play-services-vision:10.2.1') {
exclude group: 'com.android.support'
}
compile 'org.zakariya.stickyheaders:stickyheaders:0.7.6'
compile 'com.google.code.gson:gson:2.8.0'
compile('com.google.android.gms:play-services-gcm:10.2.1') {
exclude group: 'com.android.support'
}
compile('com.google.android.gms:play-services-maps:10.2.1') {
exclude group: 'com.android.support'
}
compile('com.google.android.gms:play-services-location:10.2.1') {
exclude group: 'com.android.support'
}
compile 'com.android.support:appcompat-v7:26.1.0'
compile 'com.android.support:cardview-v7:26.1.0'
compile 'com.android.support:support-annotations:26.1.0'
//retrofit dependencies
compile 'com.squareup.okhttp3:okhttp:3.9.0'
compile 'com.squareup.retrofit2:retrofit:2.3.0'
compile 'com.squareup.retrofit2:converter-gson:2.3.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.9.0'
由於我的環境受限制,我無法像我想要的那樣更新依賴項,因此在現有條件下工作,有人對解決此問題有任何想法嗎?
謝謝
事實證明com.google.common.collect
是com.google.common.collect
的一部分。有了這個發現,我找到了一個com.google.guava
的解決方案。 出於任何原因, dagger-compiler
都沒有解決它自己的依賴項com.google.guava
。
我的解決方案包括從編譯器中排除番石榴依賴項並將其添加到注釋處理程序路徑。 我還排除了針對我的案例的查找錯誤,因為舊版本是我們測試項目中的依賴項。
annotationProcessor ('com.google.guava:guava:22.0'){
exclude group: 'com.google.code.findbugs'
}
annotationProcessor('com.google.dagger:dagger-compiler:2.13') {
exclude group: 'com.google.guava'
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.