我一直负责将Dagger集成到我们现有的项目中,而且我对匕首注释处理器有一点问题。
我的环境非常有限,所以我不能只使用jcenter()甚至Google Maven来获取依赖关系。我们有一个内部常春藤仓库,用于存储和管理我们所有的依赖关系。
也就是说,我已经删除了Dagger所需的所有依赖项,但我仍有问题。 Gradle sync成功完成并解析依赖项,但是当我进行构建时,我收到以下错误。
错误:服务配置文件错误,或者抛出异常 构造Processor对象:javax.annotation.processing.Processor: 提供者dagger.internal.codegen.ComponentProcessor不可能 实例化:java.lang.NoClassDefFoundError: COM /谷歌/普通/收集/ SetMultimap
显然我错过了一个依赖关系,因为当我明确指定并允许jcenter()和Google Maven作为存储库时,我可以为测试目的而做,但是对于prod构建这是不允许的,我能够构建没有例外
现在严格阅读错误告诉我Dagger无法找到com.google.comm.collect.SetMutliMap。
我已经搜索了很多试图找到这种依赖关系,我发现的所有内容都是该文件是Guava的一部分或者至少是它的一些功能。
需要注意的一点是我使用的是以下版本的gradle:
classpath 'com.android.tools.build:gradle:3.0.0'
这是我在build.gradle中的dagger依赖,它是一个旧版本:
//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'
由于我的环境有限,我不能像我想的那样更新依赖项,所以在我所拥有的内容中工作,是否有人对如何解决这个问题有任何想法?
由于
答案 0 :(得分:0)
事实证明com.google.common.collect
是com.google.guava
的一部分
有了这个发现,我发现了一个有效的解决方案。无论出于何种原因,dagger-compiler
都没有解决自己的依赖关系,即com.google.guava
。
我的解决方案包括从编译器中排除guava依赖项并将其添加到annotationProcessor路径。我还排除了查找我的案例的错误,因为旧版本是我们测试项目中的依赖项。
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'
}