编译时的java.lang.NoSuchMethodError

t3r*_*rse 5 java android butterknife dagger-2 retrolambda

我正在尝试编译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'
}
Run Code Online (Sandbox Code Playgroud)

当我查看依赖项时,我认为我只需要谷歌自动值,因为这是丢失方法所在的位置,但添加提供的并不能解决问题.

项目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'
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我确定哪些依赖项导致编译错误?有趣的是,当我将gradle文件复制到一个空项目时,一切运行正常.

Jak*_*ton 9

Dagger 2.0-SNAPSHOT取决于具有API更改的自动SNAPSHOT:https://github.com/google/dagger/issues/113

对于正在开发的图书馆来说,这是完全正常和可接受的事情.如果您不能容忍偶尔出现破坏的构建,请不要在没有警告的情况下随时更改非发布版本.

  • 首先要做的事情是:我们非常欣赏和使用你的东西所以感谢++只是想补充一点,这不是生产就绪的工作所以没有完美的图书馆参考的期望,我只是超出了我的深度来解决问题的根源.我现在将尝试从引用的问题页面中找到解决方法. (4认同)
  • 这是固定的,是的.或者,使用"--refresh-dependencies",它的破坏性要小得多. (2认同)