2017-12-14 9 views
0

私は既存のプロジェクトでダガーを統合することになりましたが、ダガーアノテーションプロセッサーに少し問題があります。ダガーアノテーションプロセッサーがcom/google/common/collect/SetMultimapを見つけられません

私の環境はかなり制限されているので、jcenter()やGoogle Mavenを使って依存関係を取得することはできません。私たちには、すべての依存関係を保存し管理する内部アイビーリポジトリがあります。

つまり、私はDaggerが必要とするすべての依存関係を取り除きましたが、まだ問題があります。 Gradle syncは正常に終了し、依存関係を解決しますが、ビルドすると次のエラーが発生します。

error: Bad service configuration file, or exception thrown while constructing Processor object: javax.annotation.processing.Processor: Provider dagger.internal.codegen.ComponentProcessor could not be instantiated: java.lang.NoClassDefFoundError: com/google/common/collect/SetMultimap

は、明らかに私は、特に指定し、私はテスト目的のために何ができるのリポジトリとしてjcenter()とGoogle Mavenを許可する場合などの依存をしないのですが、これは許されない建物のprodのために、私はすることができる午前例外なくビルドする。

エラーを厳密に読み取ると、Daggerがcom.google.comm.collect.SetMutliMapを検出できないことがわかります。

私はこの依存関係を見つけようとかなりの努力をしましたが、このファイルがGuavaの一部であるか、少なくともその一部の機能があることがわかりました。注意すべき

ことの一つは、私はGradleの次のバージョンを使用しています:

//Dagger 
    compile 'com.google.dagger:dagger:2.10' 
    annotationProcessor 'com.google.dagger:dagger-compiler:2.10' 

その他の依存関係:ここで

classpath 'com.android.tools.build:gradle:3.0.0' 

は私の短剣の依存関係は、古いバージョンであるbuild.gradleにあります。

//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

を、それが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' 
} 
関連する問題