59 votes

java.lang.IllegalStateException: archives Dex: définition de l'extension .DEX uniquement pour les fichiers .CLASS

Je construis le projet chez gitlab ci

 ./gradlew assembleDebug --stacktrace
 

et parfois ça jette une erreur:

 FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:transformClassesWithDexBuilderForDebug'.
> com.android.build.api.transform.TransformException: java.lang.IllegalStateException: Dex archives: setting .DEX extension only for .CLASS files
 

Sur mon ordinateur local, cela fonctionne correctement.

la version de kotlin est 1.2

multidex est activé

Quelle est la raison de cette erreur?

116voto

mixel Points 1470

./gradlew clean corrigé la même erreur pour moi.

58voto

Zl3n Points 3056

Pour les développeurs Cordova ,

Si vous obtenez cette erreur de construction dans votre projet, comme l'a dit Pierrick Martellière dans les commentaires de cette réponse , utilisez votre dossier de projet:

 cordova clean
 

Il fait un nettoyage et une construction immédiatement

9voto

m.myalkin Points 399

Il semble que j'ai trouvé la solution. Sur le moment gradle été à l'affiche des avertissements pour moi:

Configuration 'compile' in project ':app' is deprecated. Use 'implementation' instead.

app: 'androidProcessor' dependencies won't be recognized as kapt annotation processors. Please change the configuration name to 'kapt' for these artifacts: 'com.arello-mobile:moxy-compiler:1.5.3' and apply the kapt plugin: "apply plugin: 'kotlin-kapt'".

J'ai fait une faute d'orthographe et j'ai oublié de supprimer les annotationProcessor pour la bibliothèque:

annotationProcessor "com.arello-mobile:moxy-compiler:$moxyVersion"
kapt "com.arello-mobile:moxy-compiler:$moxyVersion"

J'ai donc enlevé la première ligne.

Après que j'ai appliqué kapt plugin apply plugin: 'kotlin-kapt' et la correction de quelques erreurs lors de la génération de code après.

Après tout, j'ai réalisé que j'avais oublié de remplacer compile de implementation dans certains endroits. C'est bizarre, mais sans construire n'a pas fonctionné.

Cela change réparer mon erreur construire.

4voto

Md Imran Choudhury Points 2536

La réponse ci-dessus est la plupart du temps correcte, mais dans mon cas, je reçois cette exception lorsque je crée le même nom, java et le fichier kotlin , puis supprime l’un d’eux.

Les solutions sont: il suffit de construire -> Nettoyer mon projet et cela fonctionne. Et mon projet a également permis multiDex .

 defaultConfig {
        ...
        // Enabling multidex support.
        multiDexEnabled true
    }
 

4voto

oshurmamadov Points 346

Comme mentionné ci-dessus par @mixel cleaning, le travail est fait. Mais en tant qu'option, ne pas le faire manuellement, ajoutez simplement la tâche «propre» à la configuration d'exécution de l'application pour qu'elle soit effectuée tout le temps avant le lancement. Bien sûr, cela peut ralentir un peu l'ensemble du processus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X