Java закончила с ненулевым значением выхода 2 - Android Gradle

Я получаю эту ошибку, выполняя свое приложение для Android (я его очистил, а затем построил, но ошибка все еще присутствует)

  • Синхронизация: OK
  • Сделать проект: OK
  • Очистить: OK
  • Выполнить: Ошибка

Ошибка: выполнение выполнено для задачи ': app: dexDebug'.com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command' C:\Program Files\Java\jdk1.7.0_25\bin\java.exe '' завершено с ненулевым значением выхода 2

Мой 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')
}

EDIT: я не видел компиляции fileTree (dir: 'libs', include: ['*.jar']) "он составлял дважды мои библиотеки, поэтому я просто комментирую:

//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')

и он отлично работает.

Ответ 1

Я не знал (к тому времени), что "compile fileTree (dir: 'libs', include: ['*.jar'])" скомпилирует все, что имеет расширение jar в папке libs, поэтому я просто комментирую (или удаляю) следующие строки:

//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')

и он отлично работает. Спасибо, в любом случае! Мой плохой.

Ответ 2

Этот вопрос вполне возможно из-за превышения ограничения на использование дескриптора 65K, установленного Android. Эта проблема может быть решена либо путем очистки проекта, либо удаления некоторых неиспользуемых библиотек и методов из зависимостей в build.gradle, ИЛИ, добавив поддержку multidex.

Итак, если вам нужно хранить библиотеки и методы, вы можете включить поддержку multi dex, объявив его в config gradle.

defaultConfig {        
    // Enabling multidex support.
    multiDexEnabled true
}

Вы можете узнать больше о поддержке multidex и о разработке приложений с более чем 65K методами здесь.

Ответ 3

Для меня проблема была, я поставил ненужный библиотечный код complie в build.gradle

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

который вызывал более 65 тыс. методов, поэтому удалил его, gradle sync, очистил проект, а затем снова запустился, а затем эта ошибка остановилась. Мне нужны были только карты и gcm, поэтому я поместил эти строки и синхронизированный проект

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

Привет, люди снова столкнулись с этой проблемой, и на этот раз это было из-за изменения версии инструмента сборки, и мне действительно потребовалось включить multidex. Так я добавил это приложение build.gradle file..

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

И создайте класс, который расширяет класс Application и включает этот метод внутри класса.

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

также включают также метод OnCreate

@Override
public void onCreate() {
    MultiDex.install(this);
    super.onCreate();
}

Ответ 4

На всякий случай, если кто-то все еще борется с этим и не знает, почему это происходит и как исправить. На самом деле эта ошибка

Ошибка: выполнение выполнено для задачи ': app: dexDebug'. > com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: процесс "команда" C:\Program Files\Java\jdkx.x.x_xx\bin\java.exe '' завершен с помощью ненулевое значение выхода 2

может возникнуть много причин, но, конечно же, не что-то, связанное с вашей версией JDK, поэтому не теряйте время в неправильном направлении. Это две основные причины для этого.

  • У вас есть тот же файл библиотеки или jar, который содержит несколько мест, а некоторые из них конфликтуют друг с другом.
  • Вы уже достигли или превысили ограничение на 65 тыс.

Первый случай можно зафиксировать следующим образом: Узнайте, какие зависимости вы включили несколько раз. Для этого выполните следующую команду в терминале android studio

gradlew -q dependencies yourProjectName_usually_app:dependencies --configuration compile

это вернет все зависимости, но файлы jar, которые вы включаете из папки lib попытайтесь избавиться от дублирования, отмеченного звездочкой (*), это не всегда возможно, но в некоторых случаях вы все еще можете это сделать, после этого попытайтесь исключить модули, которые включены много раз, вы можете сделать это, как это

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

Во втором случае, когда вы превысили предложение ограничения метода, попытайтесь свести его к минимуму, удалив включенные библиотеки (обратите внимание, как первое решение), если нет способа сделать это, добавьте multiDexEnabled true в ваш defaultConfig

defaultConfig {
   ...
   ...
   multiDexEnabled true
}

это увеличивает ограничение метода, но это не лучшее, что можно сделать из-за возможных проблем с производительностью ВАЖНО добавление только multiDexEnabled true в defaultConfig на самом деле не достаточно на всех устройствах, на которых запущен android < 5 Lollipop, это приведет к неожиданному поведению и NoClassDefFoundError. как решить это описано здесь

Ответ 5

У меня была такая же проблема, и я исправил удаление ненужной библиотеки

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

Я удалил эту библиотеку, и я мог без проблем запускать проект.

Ответ 6

Шахта была решена путем включения multiDex для отладочных сборников.

defaultConfig {
multiDexEnabled true
}

Ответ 7

I Отклонить встроенный JDK (на 32-битной основе), поскольку встроенный JDK - 64-битный

Щелкните правой кнопкой мыши свой проект → Открыть настройки модуля Местоположение SDK → Снимите флажок Использовать встроенный JDk, затем установите свой JDK-путь, например, в Ubuntu /usr/lib/jvm/java-8-openjdk-i386

Ответ 8

Возможная проблема: вы превысили ограничение на методы dex 65k, может быть, вы добавили какую-либо библиотеку или несколько методов до того, как возникла проблема?

Ответ 9

Если вы уже обновили свой SDK, а также используете сервисы google-play, вам необходимо позаботиться о зависимости, потому что есть какие-то conflics с:

Следуйте ниже: compile 'com.google.android.gms: play-services: +' Заменить компиляцией 'com.google.android.gms: play-services: 6.5.87'

Примечание. Здесь "6.5.87" - это версия сервиса google-play. Надеюсь, это поможет..

Ответ 10

Я думаю, что это конфликты .jar файла в вашем проекте.

Я удалил android-support-v4.jar из папки libs и его работу!!!

если ваш проект дает ошибку, проверьте файл build.gradle

зависимости {

}

Ответ 11

В моем случае проблема заключалась в том, что новая библиотека (gradle зависимость), которую я добавил, полагалась на некоторые другие зависимости, и две из этих базовых зависимостей были конфликтующими/противоречивыми с некоторыми зависимостями других библиотек/зависимостей в моем построить script. В частности, я добавил Apache Commons Validator (для проверки подлинности электронной почты), а две его зависимостей (Apache Commons Logging и Apache Commons Collections) противоречили тем, которые использовались Robolectric (поскольку разные версии тех же библиотек присутствовали в мой путь сборки). Поэтому я исключил конфликтующие версии зависимостей (modules) при добавлении новой зависимости (Validator):

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

Вы можете увидеть зависимости вашего модуля gradle (у вас может быть только один модуль в вашем проекте), используя следующую команду gradle (я использую оболочку gradle, которая создается для вас, если вы создали ваш проект в Android Studio/Intellij Idea). Запустите эту команду в корневом каталоге проекта:

./gradlew: YOUR-MODULE-NAME: зависимости

После добавления этих директив exclude и повторной попытки выполнить, я получил ошибку duplicate file для NOTICE.txt, которая используется некоторыми библиотеками сообщества apache, такими как Logging and Collections. Я должен был исключить этот текстовый файл при упаковке. В моем build.gradle я добавил:

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

Оказалось, что новая библиотека (Validator) может работать со слегка более старыми версиями своих зависимостей/модулей (которые уже импортированы в мой путь сборки другой библиотекой (Robolectric)). Это было в случае с этой конкретной библиотекой, но в других библиотеках может использоваться последний API базовых зависимостей (в этом случае вам нужно попытаться выяснить, могут ли другие библиотеки, которые полагаются на конфликтующий модуль/зависимость, работать с (исключая устаревшую версию модуля /dependecy в соответствии с этими записями библиотек)).

Ответ 12

Есть две альтернативы, которые будут работать наверняка:

  • Очистите проект и затем создайте.

Если вышеуказанный метод не сработал, попробуйте следующее.

  1. Добавьте следующий файл build.gradle на уровне приложения

    defaultConfig {   
    
    multiDexEnabled true
    
    }
    

Ответ 13

Обновление моего Java SDK до последней версии 1.7.0_79 и обновление SDK Location в разделе Project Structure решили проблему для меня.

Ответ 14

Моя проблема заключалась в том, что кроме

com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: команда процесса '/Library/Java/JavaVirtualMachines/jdk1.X.X_XX.jdk/Contents/Home/bin/java'" завершена с ненулевым значением выхода 2

У меня тоже был этот след:

Ошибка отображения неподключенного перевода: java.lang.IllegalArgumentException: уже добавлено: Lcom/mypackage/ClassX;

Проблема заключалась в том, что я добавлял один и тот же класс в две разные библиотеки. Удалив файл класса /jar из одной из библиотек, проект работает правильно

Ответ 15

Для меня я добавлял все зависимости в playstore

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

Но мне нужна карта google, поэтому я сделал ее более конкретным, и ошибка была решена.

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

Ответ 16

В моем случае, я получил эту ошибку, когда есть 2 или более конфликтов библиотек (одна и та же библиотека, но разные версии). Проверьте ваше приложение build.gradle в блоке зависимостей.

Ответ 17

в моей проблеме была версия для сборки, которая была 23.0.0 rc3, и я изменил ее на 22.0.1, и моя проблема исправлена.

Ответ 18

Возможно, вы используете кабель низкого качества/кабель с дефектом для подключения вашего устройства к ПК, я заменил кабель, и он работал у меня.

Ответ 19

Эта ошибка возникает из-за использования большего количества библиотек. В моем случае "compile" com.google.android.gms: play-services-9.4.0 "вызвала эту ошибку. Чтобы избежать этой ошибки, используйте необходимые библиотеки. Например если вы хотите использовать Карты в своем приложении. Затем используйте compile 'com.google.android.gms: play-services-maps: 9.4.0'.while, добавив зависимость служб google play, укажите только нужные библиотеки. По умолчанию он включает в себя все библиотеки.

Ответ 20

В своем gradle.build файле используйте

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

И он отлично работает.

Ответ 21

Если вы хотите узнать, что именно вызывает ошибку, попробуйте создать проект через терминал gradle, как этот ./gradlew assembleDebug --stacktrace --debug. Я видел следующую ошибку в моем случае com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536

Это произошло, когда я пытался включить Google Maps в свой проект. Чтобы исправить это, я просто проверил библиотеки, в которые я включал

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

Я просто изменил его на

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

и проблема пропала

Ответ 22

У меня была такая же ошибка после преобразования моего проекта в Kotlin. Моя проблема заключалась в том, что мое местоположение jre было изменено на недопустимый путь во время процесса (я удивляюсь, почему это могло произойти... заставило меня тратить время). Исправлено:

File > Project Structure > SDK Location 

Снимите флажок Use embedded JDK, указывающий на старую установку JDK, и выберите правильный вариант:

/home/my_user/jdk1.8.0_101

После изменения ошибки ошибка исчезла

Ответ 23

РАБОТАЕТ ДЛЯ МЕНЯ:)

i обновил java до последней версии 8, ранее это было 7, а затем перешел в ОТКРЫТЫЙ НАСТРОЙК МОДУЛЯ, щелкнув правой кнопкой мыши на проекте proj и изменил путь jdk на /usr/lib/jvm/java -8-oracle установлен новый java 8. И перезапустите студию

проверить/usr/lib/jvm для имени папки java 8

Я использую ubuntu введите описание изображения здесь