我试图编译一个Android项目失败。错误消息是:
任务':mobile:_compileAppDebug'的执行失败。
java.lang.NoSuchMethodError:com.google.auto.common.MoreTypes.asTypeElements(Ljavax / lang / model / util / Types; Ljava / lang / Iterable;)Lcom / google / common / collect / ImmutableSet;
这是我模块的gradle依赖关系,在其中我指定了许多库,包括google Auto:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(':library')
compile 'com.google.dagger:dagger:2.0-SNAPSHOT'
provided 'com.google.auto.value:auto-value:1.0-rc1'
apt 'com.google.dagger:dagger-compiler:2.0-SNAPSHOT'
provided 'org.glassfish:javax.annotation:10.0-b28'
compile 'com.jakewharton:butterknife:6.1.0'
compile 'com.f2prateek.dart:dart:1.1.0'
}
当我查看依赖项时,我以为我只需要google auto值,因为那是缺少的方法所在的位置,但是添加提供的内容不能解决问题。
项目gradle文件包含retrolambda插件
dependencies {
classpath 'me.tatarka:gradle-retrolambda:2.5.0'
classpath 'com.android.tools.build:gradle:1.0.1'
classpath 'com.jakewharton.sdkmanager:gradle-plugin:0.12.+'
classpath 'io.fabric.tools:gradle:1.+'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4'
}
谁能帮助我确定哪些依赖项会导致编译错误?有趣的是,当我将gradle文件复制到一个空项目中时,一切运行正常。
Dagger 2.0-SNAPSHOT取决于具有API更改的自动SNAPSHOT:https://github.com/google/dagger/issues/113
对于正在开发的库,这是完全正常且可以接受的事情。如果您不能容忍偶尔的构建中断,请不要依赖非发行版本,这种发行版本可以随时更改而不会发出警告。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句