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
Есть две альтернативы, которые будут работать наверняка:
- Очистите проект и затем создайте.
Если вышеуказанный метод не сработал, попробуйте следующее.
-
Добавьте следующий файл 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 ![введите описание изображения здесь]()