Android Dagger批注处理器无法找到com/google/common/collect/SetMultimap
我一直负责在我们现有的项目中集成Dagger,我对Dagger注释处理器有点问题 我的环境非常受限,所以我不能只使用jcenter()甚至GoogleMaven来获取依赖项。我们有一个内部常春藤回购,存储和管理我们的所有依赖关系 也就是说,我已经删除了Dagger需要的所有依赖项,但我仍然有一个问题。Gradle sync成功完成并解决了依赖关系,但是当我进入构建时,我得到了以下错误 错误:错误的服务配置文件,或运行时引发异常 正在构造处理器对象:javax.annotation.processing.Processor: 无法找到提供程序dagger.internal.codegen.ComponentProcessor 实例化:java.lang.NoClassDefFoundError: com/google/common/collect/SetMultimap 很明显,我缺少了一个依赖项,因为我特别指定并允许jcenter()和Google Maven作为存储库,这可以用于测试目的,但对于prod构建,这是不允许的,我可以毫无例外地构建 现在,仔细阅读错误后,我发现Dagger找不到com.google.comm.collect.SetMutliMap 我已经搜索了很多次试图找到这个依赖项,我能找到的只是这个文件是Guava的一部分,或者至少它的一些函数是 需要注意的一点是,我正在使用以下版本的gradle:Android Dagger批注处理器无法找到com/google/common/collect/SetMultimap,android,dagger-2,Android,Dagger 2,我一直负责在我们现有的项目中集成Dagger,我对Dagger注释处理器有点问题 我的环境非常受限,所以我不能只使用jcenter()甚至GoogleMaven来获取依赖项。我们有一个内部常春藤回购,存储和管理我们的所有依赖关系 也就是说,我已经删除了Dagger需要的所有依赖项,但我仍然有一个问题。Gradle sync成功完成并解决了依赖关系,但是当我进入构建时,我得到了以下错误 错误:错误的服务配置文件,或运行时引发异常 正在构造处理器对象:javax.annotation.process
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.guava
有了这个发现,我找到了一个有效的解决方案。不管出于什么原因,dagger编译器
没有解决它自己的依赖关系,即com.google.guava
我的解决方案包括从编译器中排除guava依赖项并将其添加到annotationProcessor路径。我还排除了我的案例中的findbug,因为旧版本在我们的测试项目中是一个依赖项
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'
}