2016-04-04 8 views
0

Googleグアバライブラリに依存している私のアンドロイドアプリでgoogleのgrpcライブラリを使用しています。なんらかの理由でgrpcに埋め込まれたguavaには、クラスMoreExecutors.に 'directExecutor'メソッドがありませんが、このメソッドはgithubバージョンにありますか?不一致の原因は何ですか?guavaライブラリのdirectExecutorメソッドがありません

ClientCallImplというクラスでは、directExecutorの呼び出しが行われます。インポートステートメント(import static com.google.common.util.concurrent.MoreExecutors.directExecutor;)では、AndroidStudioにcan't resolve symbolメッセージが表示されますが、ビルドは失敗しません。例外は、実行中に呼び出しが行われたときに発生します。

エラーメッセージ

FATAL EXCEPTION: SyncAdapterThread-1 
    Process: com.asdf.asdf, PID: 4025 
      java.lang.NoSuchMethodError: No static method directExecutor()Ljava/util/concurrent/Executor; in class Lcom/google/common/util/concurrent/MoreExecutors; or its super classes (declaration of 'com.google.common.util.concurrent.MoreExecutors' appears in /data/data/com.fentale.dalol/files/instant-run/dex/slice-guava-jdk5-17.0_a8ada10dcaf113cb6e3b4d3e5b46975833f8ae8f-classes.dex) 
       at io.grpc.internal.ClientCallImpl.<init>(ClientCallImpl.java:100) 
       at io.grpc.internal.ManagedChannelImpl$RealChannel.newCall(ManagedChannelImpl.java:320) 
       at io.grpc.internal.ManagedChannelImpl.newCall(ManagedChannelImpl.java:299) 
       at io.grpc.stub.ClientCalls.blockingUnaryCall(ClientCalls.java:130) 
       at com.fentale.dalol.nano.DalolGrpc$DalolBlockingStub.topPosts(DalolGrpc.java:365) 

EDIT

問題は私のプロジェクトのみのMoreExecutorsクラスで定義され、両方のguava-18.0guava-jdk5-17.0.私はdirectExecutorをしたい方法に依存しているということであるようですguava-18ではなく17です。しかし、このコードでは、クラスの後半バージョンでコードを探しています。どのように私はこれを解決することができます。

+0

こんにちは@マイケルはこれを解決できましたか?私は同じ問題に直面しています。 –

+0

@NameisNilay私の答えをチェックアウトする。 –

+0

私のアプリにYoutubeの依存関係はありません。だからこれは役に立たない。それを除いて、すべてのインポートで除外モジュール 'guava-jdk5'を書きましたが、それでもエラーを解決できません。なにか提案を ? –

答えて

0

私のアプリは、guavaに依存しているyoutubeライブラリに依存していました。しかし、youtubeのguavaの依存関係は、grpcのものとは異なるソースから、古いバージョンを使用しています。アプリにはグアバ瓶の2つのバージョンが存在し、grpcは独自のものではなく古いバージョンのグアバにアクセスしていたため、この問題が発生しました。

compile('com.google.apis:google-api-services-youtube:v3-rev164-1.21.0') { 
    exclude module: 'guava-jdk5' 
} 
関連する問題