如何解决已经存在的程序类型:com.google.common.util.concurrent.ListenableFuture?

时间:2018-09-26 15:26:23

标签: java android guava android-workmanager

我正在尝试使用WorkManager 1.0.0-alpha09。我收到此错误:

Program type already present: 
com.google.common.util.concurrent.ListenableFuture

Message{kind=ERROR, text=Program type already present: 
com.google.common.util.concurrent.ListenableFuture, sources=[Unknown source 
file], tool name=Optional.of(D8)}

如果我使用1.0.0-alpha08或更低版本。我没有收到此错误,但是我需要公共构造函数

  public Worker (Context context, WorkerParameters workerParams) 

4 个答案:

答案 0 :(得分:74)

就我而言,我必须将以下配置添加到应用程序的模块build.gradle

configurations {
    all*.exclude group: 'com.google.guava', module: 'listenablefuture'
}

发生这种情况是因为某些依赖项一起使用了com.google.guava:guavacom.google.guava:listenablefuture。这会导致依赖冲突。

答案 1 :(得分:27)

看看https://issuetracker.google.com/issues/116154359

解决方法是:

implementation("android.arch.work:work-runtime:1.0.0-alpha09") {
    exclude group: 'com.google.guava', module: 'listenablefuture' 
}

答案 2 :(得分:8)

我只是在应用gradle文件的末尾添加了implementation 'com.google.guava:guava:27.0.1-android',错误消失了。

答案 3 :(得分:0)

我正在使用工作经理提供的ListenableFuture

implementation("android.arch.work:work-runtime:1.0.0")

因此,排除exclude group: 'com.google.guava', module: 'listenablefuture'并不适合我。

我正在使用内部使用androidTestImplementation "com.google.truth:truth:42"且内部使用com.google.guava:guava:25.0.1-android的依赖项。这对我来说是个问题。

com.google.truth:truth升级到43对我来说解决了这个问题。