Java terminó con un valor de salida 2 distinto de cero - Android Gradle

135
Maverick.pe 2015-04-21 08:58.

Recibo este error al ejecutar mi aplicación de Android (la limpié y luego la construí, pero el error sigue presente)

  • Sincronizar: OK
  • Hacer proyecto: OK
  • Limpiar: OK
  • Ejecutar: Error

Error: Error en la ejecución de la tarea ': aplicación: dexDebug' .com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Proceso 'comando' C: \ Archivos de programa \ Java \ jdk1.7.0 _25 \ bin \ java.exe '' terminó con un valor de salida 2 distinto de cero

Mi archivo gradle:

apply plugin: 'com.android.application'

android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
    applicationId "com.rzr.rzevallosr.miappdepruebas"
    minSdkVersion 19
    targetSdkVersion 21
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

productFlavors {
}

repositories {
    mavenCentral()
    flatDir {
        dirs 'libs'
    }
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])

// This library handles authentication and authorization
compile 'com.spotify.sdk:spotify-auth:[email protected]'
// This library handles music playback
compile 'com.spotify.sdk:spotify-player:[email protected]'

compile 'com.android.support:appcompat-v7:21.0.3'
compile 'com.android.support:recyclerview-v7:21.0.+'

compile 'com.squareup.retrofit:retrofit:1.9.0'
compile 'com.squareup.okhttp:okhttp-urlconnection:2.2.0'
compile 'com.squareup.okhttp:okhttp:2.2.0'

compile files('libs/spotify-web-api-android-master-0.1.0.jar')
compile files('libs/okio-1.3.0.jar')
}

EDITAR: No vi "compilar fileTree (dir: 'libs', include: ['* .jar'])" estaba compilando dos veces mis bibliotecas, así que solo comento:

//compile 'com.squareup.retrofit:retrofit:1.9.0'
//compile 'com.squareup.okhttp:okhttp-urlconnection:2.2.0'
//compile 'com.squareup.okhttp:okhttp:2.2.0'

//compile files('libs/spotify-web-api-android-master-0.1.0.jar')
//compile files('libs/okio-1.3.0.jar')

y funciona bien.

23 answers

205
minhazur 2015-06-07 23:30.

Es muy posible que este problema se deba a que se excede el límite de dex de 65K de métodos impuesto por Android. Este problema se puede resolver limpiando el proyecto y eliminando algunas bibliotecas y métodos no utilizados de las dependencias en build.gradle, O agregando soporte multidex.

Por lo tanto, si tiene que mantener bibliotecas y métodos, puede habilitar el soporte multi dex declarándolo en la configuración de gradle.

defaultConfig {        
    // Enabling multidex support.
    multiDexEnabled true
}

Puede leer más sobre el soporte multidex y el desarrollo de aplicaciones con más de 65K métodos aquí .

93
Amit Tumkur 2015-08-01 22:15.

Para mí, el problema era que había puesto un código de biblioteca de complie innecesario en build.gradle

dependencies {
    compile 'com.google.android.gms:play-services:7.5.0'
}

que estaba causando más de 65k métodos, así que elimínelo, gradle sync, limpió el proyecto y luego se ejecutó nuevamente y luego este error se detuvo. Solo necesitaba mapas y gcm, así que puse estas líneas y sincronicé el proyecto

compile 'com.google.android.gms:play-services-gcm:7.5.0'
compile 'com.google.android.gms:play-services-location:7.5.0'

Hola gente, volví a encontrarme con este problema y esta vez fue debido al cambio de la versión de las herramientas de compilación y realmente me requirió habilitar multidex ... así que agregué el archivo build.gradle de mi aplicación ...

defaultConfig {
    applicationId "com.am.android"
    minSdkVersion 13
    targetSdkVersion 23
    // Enabling multidex support.
    multiDexEnabled true
}

dexOptions {
    incremental true
    javaMaxHeapSize "2048M"
    jumboMode = true
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:multidex:1.0.1'
}

Y cree una clase que amplíe la clase Application e incluya este método dentro de la clase.

@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
}

también incluir en el método OnCreate también

@Override
public void onCreate() {
    MultiDex.install(this);
    super.onCreate();
}
32
Vilen 2015-09-05 04:46.

Por si acaso si alguien todavía está luchando con esto y no tiene idea de por qué está sucediendo esto y cómo solucionarlo. De hecho este error

Error: la ejecución falló para la tarea ': app: dexDebug'. > com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command' C: \ Program Files \ Java \ jdkx.x.x_xx \ bin \ java.exe '' terminado con valor de salida distinto de cero 2

puede tener muchas razones para suceder, pero ciertamente no es algo relacionado con su versión JDK, así que no pierda el tiempo en la dirección equivocada. Estas son dos razones principales para que esto suceda

  1. Tiene la misma biblioteca o archivo jar incluido en varios lugares y algunos de ellos entran en conflicto entre sí.
  2. Estás a punto de superar el límite de 65.000 métodos o ya lo has superado

El primer caso se puede solucionar de la siguiente manera: Descubra qué dependencias ha incluido varias veces. Para hacer esto, ejecute el siguiente comando en la terminal de Android Studio

gradlew -q dependencies yourProjectName_usually_app:dependencies --configuration compile

esto devolverá todas las dependencias, pero los archivos jar que incluya de la carpeta lib intente deshacerse de la duplicación marcada con asterisco (*), esto no siempre es posible, pero en algunos casos aún puede hacerlo, después de esto, intente excluir los módulos que se incluyen muchas veces, puedes hacerlo así

compile ('com.facebook.android:facebook-android-sdk:4.0.1'){
    exclude module: 'support-v4'
}

Para el segundo caso, cuando excede el límite del método, la sugerencia es tratar de minimizarlo eliminando las bibliotecas incluidas (la nota suena como la primera solución) si no hay forma de hacerlo, agregue multiDexEnabled verdadero a su configuración predeterminada

defaultConfig {
   ...
   ...
   multiDexEnabled true
}

este límite método aumenta pero no es lo mejor que puede hacer debido a posibles problemas de rendimiento IMPORTANTE adición única multiDexEnabled truea defaultConfigno es suficiente, de hecho, en todos los dispositivos con Android <5 Lollipop que dará lugar a un comportamiento inesperado y NoClassDefFoundError. cómo resolverlo se describe aquí

18
Maverick.pe 2015-05-06 13:14.

No sabía (para entonces) que "compile fileTree (dir: 'libs', include: ['* .jar'])" compila todo lo que tiene la extensión jar en la carpeta libs, así que solo comento (o elimino) esto líneas:

//compile 'com.squareup.retrofit:retrofit:1.9.0'
//compile 'com.squareup.okhttp:okhttp-urlconnection:2.2.0'
//compile 'com.squareup.okhttp:okhttp:2.2.0'

//compile files('libs/spotify-web-api-android-master-0.1.0.jar')
//compile files('libs/okio-1.3.0.jar')

y funciona bien. ¡Gracias de cualquier manera! Culpa mía.

9
Alexiscanny 2015-09-18 01:59.

Tuve el mismo problema y arreglé la eliminación de la biblioteca que no era necesaria

compile fileTree(dir: 'libs', include: ['*.jar'])

Eliminé esa biblioteca y pude ejecutar el proyecto sin ningún problema.

6
Armin 2015-09-06 22:06.

El mío se resolvió habilitando multiDex para las compilaciones de depuración.

defaultConfig {
multiDexEnabled true
}
6
ugali soft 2016-05-30 11:04.

Rechazo el JDK integrado (en 32 bits) porque el JDK integrado es de 64 bits

Haga clic con el botón derecho en su Proyecto -> Configuración de módulo abierto -> Ubicación de SDK -> Desmarque Usar JDk incrustado y luego configure su Ruta de JDK, por ejemplo, en Ubuntu / usr / lib / jvm / java-8-openjdk-i386

5
Artem Zinnatullin 2015-04-21 09:46.

Posible problema: ha excedido el límite de métodos dex 65k, ¿es posible que haya agregado alguna biblioteca o varios métodos antes de que ocurriera el problema?

3
Maddy 2015-05-15 20:53.

Si ya ha actualizado su SDK y también usa google-play-services, entonces debe ocuparse de la dependencia porque hay algún tipo de conflicto con:

Siga lo siguiente: compile 'com.google.android.gms: play-services: +' Reemplazar por compile 'com.google.android.gms: play-services: 6.5.87'

Nota: Aquí '6.5.87' es la versión del servicio de Google Play. Espero que te ayude ...

2
Samir Mangroliya 2015-07-23 02:54.

Creo que son conflictos del archivo .jar en su proyecto.

¡He eliminado android-support-v4.jar de la carpeta libs y está funcionando!

si su proyecto da un error, verifique su archivo build.gradle

dependencias {

}

2
Javad Sadeqzadeh 2015-07-23 03:44.

En mi caso, el problema era que la nueva biblioteca (dependencia de gradle) que había agregado dependía de algunas otras dependencias y dos de esas dependencias subyacentes estaban en conflicto / chocaban con algunas dependencias de otras bibliotecas / dependencias en mi script de compilación. Específicamente, agregué Apache Commons Validator(para la validación de correo electrónico), y dos de sus dependencias (Apache Commons Loggingy Apache Commons Collections) estaban en conflicto con las utilizadas por Robolectric (porque diferentes versiones de las mismas bibliotecas estaban presentes en mi ruta de compilación). Así que excluí esas versiones conflictivas de dependencias ( modules) al agregar la nueva dependencia (la Validator):

compile ('commons-validator:commons-validator:1.4.1') {
    exclude module: 'commons-logging'
    exclude module: 'commons-collections'
}

Puede ver las dependencias de sus módulos gradle (es posible que solo tenga un módulo en su proyecto) usando el siguiente comando gradle (yo uso el contenedor gradle que se crea para usted si ha creado su proyecto en Android Studio / Intellij Idea). Ejecute este comando en el directorio raíz de su proyecto:

./gradlew: YOUR-MODULE-NAME: dependencias

Después de agregar esas excludedirectivas y volver a intentar ejecutar, recibí un duplicate fileerror NOTICE.txtque es utilizado por algunas bibliotecas de apache commons como Logging y Collections. Tuve que excluir ese archivo de texto al empaquetar. En mi build.gradle, agregué:

packagingOptions {
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/notice.txt'
    exclude 'META-INF/NOTICE.txt'
}

Resultó que la nueva biblioteca (la Validator) puede funcionar con versiones un poco más antiguas de sus dependencias / módulos (que otra biblioteca (Robolectric) ya ha importado a mi ruta de compilación). Este fue el caso con esta biblioteca específica, pero otras bibliotecas podrían estar usando la última API de las dependencias subyacentes (en cuyo caso debe intentar ver si las otras bibliotecas que dependen del módulo / dependencia en conflicto pueden trabajar con el versión más reciente (al excluir la versión anterior del módulo / dependencia en las entradas de esas bibliotecas)).

1
Phuc Tran 2015-06-13 06:53.

En mi caso, recibí este error cuando hay 2 o más bibliotecas en conflicto (la misma biblioteca pero diferentes versiones). Verifique su aplicación build.gradle en el bloque de dependencias.

1
Udit Kapahi 2015-12-10 19:33.

Hay dos alternativas que funcionarán con seguridad:

  1. Limpia tu proyecto y luego construye.

Si el método anterior no funcionó, intente con el siguiente.

  1. Agregue lo siguiente al archivo build.gradle a nivel de aplicación

    defaultConfig {   
    
    multiDexEnabled true
    
    }
    
1
TheIT 2015-12-11 08:42.

Actualizar mi SDK de Java a la última versión 1.7.0_79y actualizar la versión SDK Locationinferior me Project Structureresolvió el problema.

1
mromer 2016-01-26 05:59.

Mi problema era que aparte de tener

com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command' /Library/Java/JavaVirtualMachines/jdk1.X.X_XX .jdk / Contenidos / Inicio / bin / java '' terminado con un valor de salida 2 distinto de cero

También tuve este rastro:

Error de traducción no detectado: java.lang.IllegalArgumentException: ya agregado: Lcom / mypackage / ClassX;

El problema era que estaba agregando la misma clase en dos bibliotecas diferentes. Al eliminar el archivo de clase / jar de una de las bibliotecas, el proyecto se ejecuta correctamente

1
Ajji 2016-05-18 14:33.

Para mí, estaba agregando todas las dependencias de Play Store

compile 'com.google.android.gms: play-services: 8.4.0'

Pero solo necesitaba Google Map, así que lo hice más específico y se resolvió el error.

compile 'com.google.android.gms: play-services-maps: 8.4.0'

0
max 2015-09-01 19:46.

en mi caso, el problema fue la versión de herramientas de compilación que era 23.0.0 rc3 y cambié a 22.0.1 y mi problema se solucionó.

0
Mushtaq Jameel 2015-12-08 10:20.

Es posible que esté usando un cable de baja calidad / cable defectuoso para conectar su dispositivo a la PC, reemplacé el cable y funcionó para mí.

0
Rajesh.k 2016-09-20 02:06.

Este error se debe al uso de más bibliotecas. En mi caso, 'compile' com.google.android.gms: play-services-9.4.0 'causó este error. Para evitar este error, use las bibliotecas necesarias. Por ejemplo, si lo desea para usar Maps en su aplicación. Luego use compile 'com.google.android.gms: play-services-maps: 9.4.0'. mientras agrega la dependencia de los servicios de Google Play, especifique solo las bibliotecas necesarias. de manera predeterminada, incluye todas las bibliotecas.

0
Rishabh Mahatha 2016-09-30 22:13.

En su gradle.buildarchivo, use esto

"compile fileTree(dir: 'libs', include: ['*.jar'])"

Y funciona bien.

0
NecipAllef 2016-11-05 22:52.

Si desea ver qué está causando exactamente el error, intente construir su proyecto a través de la terminal gradle, así ./gradlew assembleDebug --stacktrace --debug. He visto el siguiente error en mi casocom.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536

Esto sucedió cuando intentaba integrar Google Maps a mi proyecto. Para solucionarlo, simplemente verifiqué las bibliotecas que estaba incluyendo

compile 'com.google.android.gms:play-services:9.8.0'

Simplemente lo cambié a

compile 'com.google.android.gms:play-services-maps:9.8.0'

y el problema se fue

0
voghDev 2016-11-14 10:17.

Tuve el mismo error después de convertir mi proyecto a Kotlin. Mi problema fue que mi ubicación de jre se cambió a una ruta no válida durante el proceso (me pregunto por qué podría suceder esto ... me hizo perder el tiempo). Se solucionó haciendo esto:

File > Project Structure > SDK Location 

Desmarcó la Use embedded JDKopción, que apuntaba a una instalación antigua de JDK, y seleccionó la correcta:

/home/my_user/jdk1.8.0_101

Después de cambiar esto, el error desapareció.

0
jayant singh 2016-11-15 09:10.

TRABAJÓ PARA MI :)

Actualicé el java a la última versión 8 anteriormente era 7 y luego fui a OPEN MODULE SETTING haciendo clic derecho en el proyecto y cambié la ruta jdk a / usr / lib / jvm / java-8-oracle el nuevo java 8 instalado. Y reinicia el estudio

registrar / usr / lib / jvm para el nombre de la carpeta java 8

Estoy usando ubuntu

Related questions

MORE COOL STUFF

La estrella de HGTV, Christina Hall, revela que tiene 'envenenamiento por mercurio y plomo' probablemente por voltear 'casas asquerosas'

La estrella de HGTV, Christina Hall, revela que tiene 'envenenamiento por mercurio y plomo' probablemente por voltear 'casas asquerosas'

La estrella de HGTV, Christina Hall, revela que le diagnosticaron envenenamiento por mercurio y plomo, probablemente debido a su trabajo como manipuladora de casas.

La estrella de 'Love Is Blind' Brennon Lemieux responde a los cargos de violencia doméstica

La estrella de 'Love Is Blind' Brennon Lemieux responde a los cargos de violencia doméstica

Recientemente salió a la luz un informe policial que acusa a la estrella de 'Love Is Blind', Brennon, de violencia doméstica. Ahora, Brennon ha respondido a los reclamos.

Wynonna Judd se dio cuenta de que ahora es la matriarca de la familia Judd en un momento festivo de pánico

Wynonna Judd se dio cuenta de que ahora es la matriarca de la familia Judd en un momento festivo de pánico

Conozca cómo Wynonna Judd se dio cuenta de que ahora es la matriarca de la familia mientras organizaba la primera celebración de Acción de Gracias desde que murió su madre, Naomi Judd.

Experto en lenguaje corporal explica los 'paralelos' entre Kate Middleton y la princesa Diana

Experto en lenguaje corporal explica los 'paralelos' entre Kate Middleton y la princesa Diana

Descubra por qué un destacado experto en lenguaje corporal cree que es fácil trazar "tales paralelismos" entre la princesa Kate Middleton y la princesa Diana.

Los láseres arrojan luz sobre por qué necesita cerrar la tapa antes de descargar

Los láseres arrojan luz sobre por qué necesita cerrar la tapa antes de descargar

Los inodoros arrojan columnas de aerosol invisibles con cada descarga. ¿Como sabemos? La prueba fue capturada por láseres de alta potencia.

The Secrets of Airline Travel Quiz

The Secrets of Airline Travel Quiz

Air travel is far more than getting from point A to point B safely. How much do you know about the million little details that go into flying on airplanes?

Where in the World Are You? Take our GeoGuesser Quiz

Where in the World Are You? Take our GeoGuesser Quiz

The world is a huge place, yet some GeoGuessr players know locations in mere seconds. Are you one of GeoGuessr's gifted elite? Take our quiz to find out!

¿Caduca el repelente de insectos?

¿Caduca el repelente de insectos?

¿Sigue siendo efectivo ese lote de repelente de insectos que te quedó del verano pasado? Si es así, ¿por cuánto tiempo?

Se revela la estatua de Godzilla más nueva de Tokio

Se revela la estatua de Godzilla más nueva de Tokio

Anteriormente, Kotaku informó que un hotel Godzilla se estaba abriendo en Tokio este abril. Junto al hotel, estaba programada la aparición de una enorme cabeza de 'Zilla, pero todo lo que hemos visto fueron imágenes conceptuales computarizadas.

El alcalde de Chicago realmente quiere que Elon Musk perfore un túnel debajo de la ciudad

El alcalde de Chicago realmente quiere que Elon Musk perfore un túnel debajo de la ciudad

Foto: Getty Desde que lanzó The Boring Company hace un año, Elon Musk ha mencionado varios sitios de construcción posibles para el negocio de perforación de túneles y ha descartado una vaga referencia a una aprobación gubernamental "verbal" para un túnel Hyperloop que conecta la ciudad de Nueva York y Washington. , CC. Pero ahora sabemos que al menos un alcalde quiere que Musk perfore un agujero debajo de su ciudad.

Ponle una tapa. En realidad, ponle una tapa a todo. Consigue 12 tapas de cocina elásticas de silicona por $14. [Exclusivo]

Ponle una tapa. En realidad, ponle una tapa a todo. Consigue 12 tapas de cocina elásticas de silicona por $14. [Exclusivo]

Tapas elásticas de silicona de Tomorrow's Kitchen, paquete de 12 | $14 | Amazonas | Código promocional 20OFFKINJALids son básicamente los calcetines de la cocina; siempre perdiéndose, dejando contenedores huérfanos que nunca podrán volver a cerrarse. Pero, ¿y si sus tapas pudieran estirarse y adaptarse a todos los recipientes, ollas, sartenes e incluso frutas en rodajas grandes que sobran? Nunca más tendrás que preocuparte por perder esa tapa tan específica.

Cuéntanos tus mejores trucos de Washington, DC

Cuéntanos tus mejores trucos de Washington, DC

Hemos pirateado algunas ciudades industriales en esta columna, como Los Ángeles y Las Vegas. Ahora es el momento de una ciudad militar-industrial-compleja.

Patinaje artístico de EE. UU. 'frustrado' por falta de decisión final en evento por equipos, pide una decisión justa

Patinaje artístico de EE. UU. 'frustrado' por falta de decisión final en evento por equipos, pide una decisión justa

El equipo está a la espera de las medallas que ganó en los Juegos Olímpicos de Invierno de 2022 en Beijing, ya que se está resolviendo un caso de dopaje que involucra a la patinadora artística rusa Kamila Valieva.

Los compradores de Amazon dicen que duermen 'como un bebé mimado' gracias a estas fundas de almohada de seda que cuestan tan solo $ 10

Los compradores de Amazon dicen que duermen 'como un bebé mimado' gracias a estas fundas de almohada de seda que cuestan tan solo $ 10

Miles de compradores de Amazon recomiendan la funda de almohada de seda Mulberry, y está a la venta en este momento. La funda de almohada de seda viene en varios colores y ayuda a mantener el cabello suave y la piel clara. Compre las fundas de almohada de seda mientras tienen hasta un 46 por ciento de descuento en Amazon

Se busca al corredor de los Bengals Joe Mixon por orden de arresto emitida por presuntamente apuntar con un arma de fuego a una mujer

Se busca al corredor de los Bengals Joe Mixon por orden de arresto emitida por presuntamente apuntar con un arma de fuego a una mujer

El jueves se presentó una denuncia de delito menor amenazante agravado contra Joe Mixon.

Profesor de la Universidad de Purdue arrestado por presuntamente traficar metanfetamina y proponer favores sexuales a mujeres

Profesor de la Universidad de Purdue arrestado por presuntamente traficar metanfetamina y proponer favores sexuales a mujeres

El Departamento de Policía de Lafayette comenzó a investigar a un profesor de la Universidad de Purdue en diciembre después de recibir varias denuncias de un "hombre sospechoso que se acercaba a una mujer".

Concept Drift: el mundo está cambiando demasiado rápido para la IA

Concept Drift: el mundo está cambiando demasiado rápido para la IA

Al igual que el mundo que nos rodea, el lenguaje siempre está cambiando. Mientras que en eras anteriores los cambios en el idioma ocurrían durante años o incluso décadas, ahora pueden ocurrir en cuestión de días o incluso horas.

India me está pateando el culo

India me está pateando el culo

Estoy de vuelta por primera vez en seis años. No puedo decirte cuánto tiempo he estado esperando esto.

ℝ

“And a river went out of Eden to water the garden, and from thence it was parted and became into four heads” Genesis 2:10. ? The heart is located in the middle of the thoracic cavity, pointing eastward.

¿Merrick Garland le ha fallado a Estados Unidos?

Es más de la mitad de la presidencia de Biden. ¿Qué está esperando Merrick Garland?

¿Merrick Garland le ha fallado a Estados Unidos?

Creo, un poco tarde en la vida, en dar oportunidades a la gente. Generosamente.

Language