7

I have tried a lot of solutions that were posted online but nothing is working for me. My program was working fine. But after winter break, it is producing the following error: Error:Execution failed for task ':app:transformClassesWithMultidexlistForDebug'.

java.lang.UnsupportedOperationException (no error message)

My gradle file looks like this:

buildscript {
repositories {
    maven { url 'http://download.crashlytics.com/maven' }
}

dependencies {
    classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1.+'
}
}

apply plugin: 'com.android.application'

repositories {
    maven { url 'http://download.crashlytics.com/maven' }
    maven { url "https://jitpack.io" }
}

apply plugin: 'crashlytics'

android {
    compileSdkVersion 21
    buildToolsVersion "23.0.2"

    compileOptions{
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }

    defaultConfig {
        applicationId "x"
        minSdkVersion 14
        targetSdkVersion 21
        versionCode 20
        versionName "1.2"
        multiDexEnabled true
    }

    lintOptions {
        abortOnError false
    }

    signingConfigs {
        release {
            storeFile file("../x.jks")
            storePassword "x"
            keyAlias "x"
            keyPassword "x"
       }

        debug {
            storeFile file("../x.jks")
            storePassword "x"
            keyAlias "x"
            keyPassword "x"
       }
   }

buildTypes {
    release {
        signingConfig signingConfigs.release
    }
    debug {
        signingConfig signingConfigs.release
    }
}
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
    compile 'com.android.support:support-v4:21.0.+'
    compile 'com.google.android.gms:play-services:4.0.+'
    compile 'com.google.guava:guava:+'
    compile 'com.loopj.android:android-async-http:1.4.5'
    compile 'com.koushikdutta.urlimageviewhelper:urlimageviewhelper:+'
    compile 'com.etsy.android.grid:library:1.0.5'
    compile 'com.sothree.slidinguppanel:library:+'
    compile 'com.crashlytics.android:crashlytics:1.+'
    compile 'com.github.satyan:sugar:1.3'
    //compile 'com.afollestad:material-dialogs:0.7.0.1'
    compile 'com.pnikosis:materialish-progress:1.0'
    compile 'com.github.markushi:circlebutton:1.1'
    compile ('com.github.afollestad:material-dialogs:53103863a6') {
        transitive = true
    }
    }

My stacktrace looks like following:

Configuration on demand is an incubating feature.
Incremental java compilation is an incubating feature.
:app:preBuild UP-TO-DATE
:app:preDebugBuild UP-TO-DATE
:app:checkDebugManifest
:app:preReleaseBuild UP-TO-DATE
:app:prepareComAndroidSupportAppcompatV72200Library UP-TO-DATE
:app:preDebugAndroidTestBuild UP-TO-DATE
:app:prepareComAndroidSupportMultidex101Library UP-TO-DATE
:app:prepareComAndroidSupportRecyclerviewV72340Library UP-TO-DATE
:app:prepareComAndroidSupportSupportV42340Library UP-TO-DATE
:app:prepareComEtsyAndroidGridLibrary105Library UP-TO-DATE
:app:prepareComGithubAfollestadMaterialDialogs53103863a6Library UP-TO-DATE
:app:prepareComGithubMarkushiCirclebutton11Library UP-TO-DATE
:app:prepareComGithubSatyanSugar13Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServices4030Library UP-TO-DATE
:app:prepareComPnikosisMaterialishProgress10Library UP-TO-DATE
:app:prepareComSothreeSlidinguppanelLibrary331Library UP-TO-DATE
:app:prepareDebugDependencies
:app:compileDebugAidl UP-TO-DATE
:app:compileDebugRenderscript UP-TO-DATE
:app:generateDebugBuildConfig UP-TO-DATE
:app:mergeDebugShaders UP-TO-DATE
:app:compileDebugShaders UP-TO-DATE
:app:generateDebugAssets UP-TO-DATE
:app:mergeDebugAssets UP-TO-DATE
:app:generateDebugResValues UP-TO-DATE
:app:generateDebugResources UP-TO-DATE
:app:mergeDebugResources UP-TO-DATE
:app:processDebugManifest UP-TO-DATE
:app:crashlyticsGenerateResourcesDebug
:app:processDebugResources
:app:generateDebugSources
:app:incrementalDebugJavaCompilationSafeguard UP-TO-DATE
:app:compileDebugJavaWithJavac UP-TO-DATE
:app:compileDebugNdk UP-TO-DATE
:app:compileDebugSources UP-TO-DATE
:app:transformClassesWithJarMergingForDebug UP-TO-DATE
:app:collectDebugMultiDexComponents UP-TO-DATE
:app:transformClassesWithMultidexlistForDebug FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:transformClassesWithMultidexlistForDebug'.
> java.lang.UnsupportedOperationException (no error message)

* Try:
Run with --info or --debug option to get more log output.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformClassesWithMultidexlistForDebug'.
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
    at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
    at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:66)
    at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
    at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52)
    at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
    at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
    at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185)
    at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:66)
    at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:50)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:25)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:110)
    at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37)
    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
    at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23)
    at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43)
    at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30)
    at org.gradle.initialization.DefaultGradleLauncher$4.run(DefaultGradleLauncher.java:153)
    at org.gradle.internal.Factories$1.create(Factories.java:22)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:53)
    at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:150)
    at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:32)
    at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:98)
    at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:92)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:63)
    at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:92)
    at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:83)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:99)
    at org.gradle.tooling.internal.provider.runner.BuildModelActionRunner.run(BuildModelActionRunner.java:46)
    at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
    at org.gradle.tooling.internal.provider.runner.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:58)
    at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:48)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:30)
    at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:81)
    at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:46)
    at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:52)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
    at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
    at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
    at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
    at org.gradle.util.Swapper.swap(Swapper.java:38)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
    at org.gradle.launcher.daemon.server.health.DaemonHealthTracker.execute(DaemonHealthTracker.java:47)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
    at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:60)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
    at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:72)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
    at org.gradle.launcher.daemon.server.health.HintGCAfterBuild.execute(HintGCAfterBuild.java:41)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
    at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
    at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:237)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
    at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
Caused by: java.lang.UnsupportedOperationException
    at com.android.ide.common.process.ProcessInfoBuilder$JavaProcessInfoImpl.getExecutable(ProcessInfoBuilder.java:349)
    at com.android.build.gradle.internal.process.GradleProcessResult.buildProcessException(GradleProcessResult.java:74)
    at com.android.build.gradle.internal.process.GradleProcessResult.assertNormalExitValue(GradleProcessResult.java:49)
    at com.android.builder.core.AndroidBuilder.createMainDexList(AndroidBuilder.java:1462)
    at com.android.build.gradle.internal.transforms.MultiDexTransform.callDx(MultiDexTransform.java:309)
    at com.android.build.gradle.internal.transforms.MultiDexTransform.computeList(MultiDexTransform.java:265)
    at com.android.build.gradle.internal.transforms.MultiDexTransform.transform(MultiDexTransform.java:186)
    at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:178)
    at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:174)
    at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:156)
    at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:173)
    at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75)
    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.doExecute(AnnotationProcessingTaskFactory.java:245)
    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:221)
    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.execute(AnnotationProcessingTaskFactory.java:232)
    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:210)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
    ... 70 more

It would be really great if someone can help me out! I have been at this for a few days now.

AKS
  • 16,482
  • 43
  • 166
  • 258
user5497505
  • 73
  • 1
  • 9
  • Gradle version? Does it fail with version 3.3? I see you have that line: `transitive = true`, can you see changing it to `false` helps? – AKS Jan 06 '17 at 09:08
  • @ArunSangal Gradle Version is 2.14.1. And no, it does not help if I change transitive to false. The problem is, with these settings it was working previously but now suddenly it isnt. – user5497505 Jan 06 '17 at 09:12
  • See if you can try this with a later version of Gradle like 3.x onwards. 3.3 is the latest. Secondly, Can you use the same Gradle version but using Java 1.8 or latest to see if that fixes it. If one of the dependencies is built with 1.8 and you are trying to consume it with doing your build using 1.7, you may see this error. Try switching that transitive value from `true` to `false`. How about if you try the same on your co-worker's machine if you think you accidentally changed something. At least it'll confirm if it's an issue on your machine or everywhere with this configuration. – AKS Jan 06 '17 at 09:17
  • Try changing: `buildToolsVersion "23.0.3"` or just `23` AND i would recommend to use Java8. Is there any `rt.jar` in your libs folder? Do a `clean` and then rebuild – AKS Jan 06 '17 at 09:36
  • @ArunSangal, if I change from 1.7 to 1.8, a new set of errors are produced. I tried re-installing on my own computer and I checked on 3 other computers, the error is still the same. And no, there is no rt.jar in my libs folder. – user5497505 Jan 06 '17 at 09:42
  • have you extends MultiDexApplication to your Application class? – Rajesh Jan 06 '17 at 09:44
  • ` compile 'com.google.guava:guava:+'` Change that to use ` compile 'com.google.guava:guava:19.0' or later. Better add this piece of code: `compile ("com.github.rholder:guava-retrying:2.0.0") { exclude group: 'com.google.guava', module: 'guava' } compile 'com.google.guava:guava:19.0'` ` – AKS Jan 06 '17 at 09:46
  • @RajeshKushvaha, no, I havent. I got 4 errors regarding dex options which went away with this suggestion I copied from some posts. – user5497505 Jan 06 '17 at 09:47
  • See this: http://stackoverflow.com/questions/41246000/android-try-to-resolve-transform-classes-with-multidexlist-for-debug he's having the same issue like you. – AKS Jan 06 '17 at 09:48
  • `:app:transformClassesWithMultidexlistForDebug` FAILED here, extend multiDex to your app class and try – Rajesh Jan 06 '17 at 09:49
  • As you are using `compile 'com.google.guava:guava:+' `, it would be picking the latest guava version 21.0+ etc and that if compiled with Java8 would barf as you are using 1_7. So, See if you can change that as per the post I mentioned above. – AKS Jan 06 '17 at 09:51
  • @ArunSangal, I dont know how I missed that post. But thank you so much for your reply. This `compile ("com.github.rholder:guava-retrying:2.0.0") { exclude group: 'com.google.guava', module: 'guava' } compile 'com.google.guava:guava:19.0'` worked! – user5497505 Jan 06 '17 at 10:00
  • @RajeshKushvaha, I did not try extending the multiDex to my app class because changing dependencies worked. Thank you for your reply. – user5497505 Jan 06 '17 at 10:00
  • `buildToolsVersion "21.1.2"` ? – AKS Jan 06 '17 at 10:00
  • @ArunSangal, I am using buildToolsVersion "23.0.2". – user5497505 Jan 06 '17 at 10:03
  • I see you are using a lot of `x.x.+` way of defining the versions to pick the latest for that release/always latest. Though it's good, it does come with these kinds of issues. Look for Netflix Gradle Dependency lock plugin at least to make your CI builds future proof. https://github.com/nebula-plugins/gradle-dependency-lock-plugin – AKS Jan 06 '17 at 10:10

1 Answers1

3

You are using compile 'com.google.guava:guava:+'

Usually, it's not a very good idea to use dynamic versions. They have their pros/cons. If you do want to grab the latest ones, make sure you pay attention to the compatibilties of Java version, dependencies versions with each other and at least try Netflix's dependency lock plugin which will ensure that when you create a build, it'll generate a hard-coded version for that exact build that you can use to recreate in future.

Anyways, Guava version 21 requires JDK 1.8 without providing back porting support and it seems like that was causing the error in your case.

To solve it, try by including the guava-retrying library so that it uses version 19.0 of guava library:

compile ("com.github.rholder:guava-retrying:2.0.0") {
    exclude group: 'com.google.guava', module: 'guava'
}
compile 'com.google.guava:guava:19.0'
AKS
  • 16,482
  • 43
  • 166
  • 258