How to solve 'Program type already present: com.google.common.util.concurrent.ListenableFuture'?

JavaAndroidGuavaAndroid Workmanager

Java Problem Overview


I am trying to use WorkManager 1.0.0-alpha09. and getting this error:

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)}

If i use version 1.0.0-alpha08 or less. I don't get this error, but i need public constructor

public Worker(Context context, WorkerParameters workerParams)

Java Solutions


Solution 1 - Java

In my case, I had to add the following configurations to app's module build.gradle:

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

It happens because some dependencies use com.google.guava:guava and com.google.guava:listenablefuture together. It causes a dependency conflict.

Solution 2 - Java

Take a look at https://issuetracker.google.com/issues/116154359.

The workaround is:

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

Solution 3 - Java

I merely added implementation 'com.google.guava:guava:27.0.1-android' at the end of my app gradle file and the error went away.

Solution 4 - Java

I am using ListenableFuture that comes from the work manager.

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

So excluding exclude group: 'com.google.guava', module: 'listenablefuture' , didn't work for me.

I was using a dependency that internally used androidTestImplementation "com.google.truth:truth:42" that internally used com.google.guava:guava:25.0.1-android. This was causing the problem for me.

Upgrading com.google.truth:truth to 43 solved it for me.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSimran MarokView Question on Stackoverflow
Solution 1 - JavaAnggrayudi HView Answer on Stackoverflow
Solution 2 - JavaRahulView Answer on Stackoverflow
Solution 3 - Javauser2297550View Answer on Stackoverflow
Solution 4 - JavaVraj ParikhView Answer on Stackoverflow