web-dev-qa-db-fra.com

Erreur «Échec de l'exécution de la compression» lors de la génération du projet dans Android Studio 3.1

J'essaie de construire https://github.com/neural-nuts/Cam2Caption in Android Studio 3.1 Preview, mais soit j'utilise un très ancien build.gradle ou il meurt avec

Error:Execution failed for task ':Application:packageDebug'.
Execution of compression failed.

cela se produit après avoir nettoyé un projet ou reconstruit. OSX, le dernier né de tout. J'utilise ce que je pense est le dernier et le plus grand build.gradle par défaut

classpath 'com.Android.tools.build:gradle:3.0.0'
...
Android {
    compileSdkVersion 26
    defaultConfig {
        minSdkVersion 26
        targetSdkVersion 26
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
....
        compile "com.Android.support:support-v4:26.1.0"
        compile "com.Android.support:support-v13:26.1.0"
        compile "com.Android.support:cardview-v7:26.1.0"
        compile "com.Android.support:appcompat-v7:26.1.0"

Avec stacktrace, je reçois

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':Application:packageDebug'.
> Java.io.IOException: Execution of compression failed.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':Application:packageDebug'.
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.Java:100)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.Java:70)
    at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.Java:51)
    at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.Java:62)
    at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.Java:54)
    at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.Java:60)
    at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.Java:97)
    at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.Java:87)
    at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.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:54)
    at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.Java:43)
    at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.Java:34)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.Java:248)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.Java:336)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.Java:328)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.Java:199)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.Java:110)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.Java:241)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.Java:230)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.Java:123)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.Java:79)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.Java:104)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.Java:98)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.Java:626)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.Java:581)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.Java:98)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.Java:63)
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.Java:46)
    at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.Java:55)
Caused by: org.gradle.tooling.BuildException: Java.io.IOException: Execution of compression failed.
    at com.Android.build.gradle.internal.scope.OutputScope.lambda$parallelForEachOutput$10(OutputScope.Java:241)
    at com.Android.build.gradle.internal.scope.OutputScope.parallelForEachOutput(OutputScope.Java:236)
    at com.Android.build.gradle.internal.scope.OutputScope.parallelForEachOutput(OutputScope.Java:197)
    at com.Android.build.gradle.internal.scope.OutputScope.parallelForEachOutput(OutputScope.Java:181)
    at com.Android.build.gradle.tasks.PackageAndroidArtifact.doFullTaskAction(PackageAndroidArtifact.Java:449)
    at com.Android.build.gradle.internal.tasks.IncrementalTask.taskAction(IncrementalTask.Java:109)
    at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.Java:73)
    at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.Java:46)
    at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.Java:39)
    at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.Java:26)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.Java:121)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.Java:336)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.Java:328)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.Java:199)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.Java:110)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.Java:110)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.Java:92)
    ... 29 more
Caused by: Java.lang.RuntimeException: Java.io.IOException: Execution of compression failed.
Caused by: Java.io.IOException: Execution of compression failed.
    at com.Android.apkzlib.Zip.CentralDirectoryHeader.getCompressionInfoWithWait(CentralDirectoryHeader.Java:431)
    at com.Android.apkzlib.Zip.ZFile.processAllReadyEntriesWithWait(ZFile.Java:1749)
    at com.Android.apkzlib.Zip.ZFile.hasPendingChangesWithWait(ZFile.Java:2623)
    at com.Android.apkzlib.zfile.ApkZFileCreator.hasPendingChangesWithWait(ApkZFileCreator.Java:180)
    at com.Android.builder.internal.packaging.IncrementalPackager.hasPendingChangesWithWait(IncrementalPackager.Java:319)
    at com.Android.build.gradle.tasks.PackageAndroidArtifact.doTask(PackageAndroidArtifact.Java:672)
    at com.Android.build.gradle.tasks.PackageAndroidArtifact.splitFullAction(PackageAndroidArtifact.Java:500)
    at com.Android.build.gradle.internal.scope.OutputScope.lambda$parallelForEachOutput$6(OutputScope.Java:186)
    at com.Android.build.gradle.internal.scope.OutputScope.lambda$parallelForEachOutput$7(OutputScope.Java:203)
    at com.Android.build.gradle.internal.scope.OutputScope.lambda$null$8(OutputScope.Java:225)
    Suppressed: Java.io.IOException: Failed to obtain compression information for entry
        at com.Android.apkzlib.Zip.ZFile.processAllReadyEntries(ZFile.Java:1727)
        at com.Android.apkzlib.Zip.ZFile.processAllReadyEntriesWithWait(ZFile.Java:1741)
        at com.Android.apkzlib.Zip.ZFile.update(ZFile.Java:904)
        at com.Android.apkzlib.Zip.ZFile.close(ZFile.Java:1196)
        at com.Android.apkzlib.zfile.ApkZFileCreator.close(ApkZFileCreator.Java:189)
        at com.google.common.io.Closer.close(Closer.Java:216)
        at com.Android.builder.internal.packaging.IncrementalPackager.close(IncrementalPackager.Java:332)
        at com.Android.build.gradle.tasks.PackageAndroidArtifact.doTask(PackageAndroidArtifact.Java:678)
        at com.Android.build.gradle.tasks.PackageAndroidArtifact.splitFullAction(PackageAndroidArtifact.Java:500)
        at com.Android.build.gradle.internal.scope.OutputScope.lambda$parallelForEachOutput$6(OutputScope.Java:186)
        at com.Android.build.gradle.internal.scope.OutputScope.lambda$parallelForEachOutput$7(OutputScope.Java:203)
        at com.Android.build.gradle.internal.scope.OutputScope.lambda$null$8(OutputScope.Java:225)
        at Java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.Java:1424)
        at Java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.Java:289)
        at Java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.Java:1056)
        at Java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.Java:1692)
        at Java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.Java:157)
    Caused by: Java.util.concurrent.ExecutionException: Java.lang.IllegalArgumentException: Self-suppression not permitted
        at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.Java:503)
        at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.Java:462)
        at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.Java:79)
        at com.Android.apkzlib.Zip.ZFile.processAllReadyEntries(ZFile.Java:1722)
        ... 16 more
    Caused by: Java.lang.IllegalArgumentException: Self-suppression not permitted
        at com.Android.apkzlib.Zip.compress.DeflateExecutionCompressor.immediateCompress(DeflateExecutionCompressor.Java:72)
        at com.Android.apkzlib.Zip.compress.ExecutorCompressor.lambda$compress$0(ExecutorCompressor.Java:54)
    Caused by: Java.lang.OutOfMemoryError: Java heap space
Caused by: Java.util.concurrent.ExecutionException: Java.lang.IllegalArgumentException: Self-suppression not permitted
    at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.Java:503)
    at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.Java:482)
    at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.Java:79)
    at com.Android.apkzlib.Zip.CentralDirectoryHeader.getCompressionInfoWithWait(CentralDirectoryHeader.Java:425)
    ... 9 more
    [CIRCULAR REFERENCE:Java.lang.IllegalArgumentException: Self-suppression not permitted]

* Get more help at https://help.gradle.org 
BUILD FAILED in 12s
15
Benjamin H

J'ai également rencontré ce problème récemment. Cela est arrivé parce que j'ai inclus un très gros fichier Zip dans les ressources. J'ai résolu ce problème en ajoutant des dexoptions dans l'application build.gradle

Android {
    dexOptions {
        javaMaxHeapSize "4g"
    } 
}

Et augmenter la taille du tas JVM

org.gradle.jvmargs=-Xmx4608M

comme ceci.Allez à gradle.properties pour trouver cette option.

40
sunil sunny