5

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;

これは、Google Auto を含む多数のライブラリを指定するモジュールの gradle 依存関係です。

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の自動値が必要だと思いましたが、提供されたものを追加しても問題は解決しません。

プロジェクト 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 ファイルを空のプロジェクトにコピーすると、すべて正常に動作します。

4

2 に答える 2

9

Dagger 2.0-SNAPSHOT は、API が変更された Auto SNAPSHOT に依存します: https://github.com/google/dagger/issues/113

これは、開発中のライブラリでは完全に正常であり、許容できることです。時折発生するビルドの破損を許容できない場合は、警告なしにいつでも変更される可能性のある方法で、リリースされていないバージョンに依存しないでください。

于 2015-02-04T00:25:55.550 に答える
0

私は同様の問題に遭遇しました。私が使用しているいくつかのライブラリは、jar ファイル内に Guava をバンドルしています。

したがって、この特定の依存関係を apt 構成から除外すると、問題が修正されました。

configurations {
  apt.exclude module: 'artifactId-Of-Library' 
}
于 2015-05-18T08:54:36.190 に答える