web-dev-qa-db-ja.com

Javaは0以外の終了値2で終了しました - Android Gradle

私は自分のAndroidアプリを実行しているときにこのエラーが発生しました(私はそれをきれいにしてそれから構築しましたが、エラーはまだ存在しています)

  • 同期:OK
  • プロジェクトを作る:OK
  • きれい:OK
  • 実行:エラー

エラー:タスク ':app:dexDebug'の実行に失敗しました。 _25\bin\Java.exeが終了値0以外で終了しました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:1.0.0-beta9@aar'
// This library handles music playback
compile 'com.spotify.sdk:spotify-player:1.0.0-beta9@aar'

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

編集:私は "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')

そしてそれはうまくいきます。

134
Maverick.pe

"fileTree(dir: 'libs'、include:['* .jar'])"をコンパイルすること libsフォルダに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')

そしてそれはうまくいきます。とにかくありがとう!私の悪い.

17
Maverick.pe

この問題は、Androidによって課されている65Kメソッドのdex制限を超えていることが原因と考えられます。この問題は、プロジェクトをクリーンアップし、build.gradle、、またはの依存関係から未使用のライブラリやメソッドを削除することで解決できます。

それで、もしあなたがライブラリとメソッドを保持しなければならないならば、それからgradle configの中でそれを宣言することによってmulti dexサポートを可能にすることができます。

defaultConfig {        
    // Enabling multidex support.
    multiDexEnabled true
}

マルチデックスのサポートと65K以上のメソッドを使ったアプリケーションの開発 の詳細を読むことができます

204
minhazur

私にとっては問題は、build.gradleに不要なcompieライブラリコードを追加していたことです

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

これは65,000以上のメソッドを引き起こしていたので、それを削除し、同期を許可し、プロジェクトをクリーンにしてから再度実行してからこのエラーを止めました。私はこれらの行と同期されたプロジェクトを入れるように私はちょうど地図とgcmを必要としました

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

こんにちは人々私は再びこの問題に遭遇し、今回はそれはビルドツールのバージョンを変更するためのものであり、それは本当に私はこれらの私のアプリのbuild.gradleファイルを追加..マルチデックスを有効にする必要がありました..

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();
}
93
Amit Tumkur

誰かがまだこれに苦労していて、これがなぜ起こっているのか、どのように修正するのかわからない場合に備えて。実際、このエラー

エラー:タスク ':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 ''で終了ゼロ以外の終了値2

多くの理由が考えられますが、JDKのバージョンに関連するものではないため、間違った方向に時間を浪費しないでください。これらが起こる主な理由は2つあります

  1. 同じライブラリまたはjarファイルに複数の場所が含まれていて、それらの一部が互いに競合している。
  2. メソッドの上限である65kに近づいている、またはすでに超えています

最初のケースは次のように修正できます。複数回含めた依存関係を見つけます。これを行うには、Android studioターミナルで次のコマンドを実行します

gradlew -q dependencies yourProjectName_usually_app:dependencies --configuration compile

これはすべての依存関係を返しますが、libフォルダーからインクルードするjarファイルは、アスタリスク(*)でマークされた重複の除去を試みます。これは常に可能とは限りませんが、場合によってはモジュールを除外しようとすることがあります何度も含まれています、あなたはこのようにすることができます

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

メソッド制限の提案を超えた2番目のケースでは、含まれるライブラリを削除して最小化しようとします(最初のソリューションのように聞こえます)、それができない場合は、defaultDegにmultiDexEnabled trueを追加します

defaultConfig {
   ...
   ...
   multiDexEnabled true
}

これはメソッドの制限を増やしますが、パフォーマンスの問題が発生する可能性があるため、最善の方法ではありません重要multiDexEnabled trueのみをdefaultConfigに追加することはできません実際、Android <5 Lollipopを実行しているすべてのデバイスでは、予期しない動作とNoClassDefFoundErrorが発生します。それを解決する方法は説明されています ここ

32
Vilen

私は同じ問題を抱えていたし、私は不要だったライブラリを削除することを修正しました

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

そのライブラリを削除したところ、問題なくプロジェクトを実行できました。

9
Alexiscanny

私はデバッグビルド用にmultiDexを有効にすることで解決しました。

defaultConfig {
multiDexEnabled true
}
6
Armin

EmbeddedJDKは64ビットなので、Embedded JDK(32ビット)を拒否します

プロジェクトを右クリック - >オープンモジュール設定 - >SDKの場所 - > [埋め込みJDkを使用]をオフにしてからJDKパスを設定します。たとえば、Ubuntu/ usr/lib/jvm/Java-8-openjdk-i386

6
ugali soft

考えられる問題:dex 65kメソッドの制限を超えました。問題が発生する前にいくつかのライブラリまたはいくつかのメソッドを追加した可能性がありますか?

5

あなたがすでにあなたのSDKをアップデートしていて、あなたもgoogle-play-servicesを使っているのであれば、ある種の衝突があるので依存関係に注意する必要があります。

以下の手順に従ってください。 'com.google.Android.gms:play-services:+'をコンパイルしてください。 'com.google.Android.gms:play-services:6.5.87'に置き換えてください。

注:ここで「6.5.87」はgoogle-play-serviceのバージョンです。助けになれば幸いです。

3
Maddy

私の場合、問題は私が追加した新しいライブラリ(gradleの依存関係)が他の依存関係に依存していて、そのうち2つの依存関係が私のビルドスクリプトの他のライブラリの依存関係と衝突/衝突していることでした。具体的には、Apache Commons Validator(Eメール検証用)を追加しました。その2つの依存関係(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モジュールの依存関係(プロジェクトに1つのモジュールしかない場合があります)を確認できます(Android Studio/Intellijでプロジェクトを作成した場合は、自動的に作成されるgradle wrapperを使用します)。アイディア)。プロジェクトのルートディレクトリでこのコマンドを実行します。

./gradlew:あなたのモジュール名:依存関係

これらのexcludeディレクティブを追加して実行を再試行した後、LoggingやCollectionsのようないくつかのApache commonsライブラリで使用されるduplicate fileに対してNOTICE.txtエラーが発生しました。梱包するときは、そのテキストファイルを除外しなければなりませんでした。私のbuild.gradleに、私は追加しました:

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

新しいライブラリ(Validator)は少し古いバージョンの依存関係/モジュール(他のライブラリ(Robolectric)によって私のビルドパスに既にインポートされている)で動作することができました。これはこの特定のライブラリの場合でしたが、他のライブラリは根本的な依存関係の最新のAPIを使用しているかもしれません(その場合、競合するモジュール/依存関係に依存する他のライブラリが新しいバージョン(それらのライブラリのエントリの下のモジュール/依存関係の古いバージョンを除外することによって)。

2

プロジェクト内の.jarファイルと競合していると思います。

私はlibsフォルダとその作業からAndroid-support-v4.jarを削除しました!

プロジェクトでエラーが発生した場合は、build.gradleファイルをチェックインしてください。

依存関係{

}

2

私の場合、2つ以上のライブラリが競合している(同じライブラリだが異なるバージョン)場合にこのエラーが発生しました。依存関係ブロックでアプリのbuild.gradleを確認してください。

1
Phuc Tran

私のJava SDKを最新版の1.7.0_79に更新し、SDK Locationの下のProject Structureを更新することで問題は解決しました。

1
TheIT

私の問題は持っていることとは別にそれだった

com.Android.build.api.transform.TransformException:com.Android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:プロセス 'command' /Library/Java/JavaVirtualMachines/jdk1.X.X_XX .jdk/Contents/Home/bin/Java ''が終了値0以外で終了しました2

私はこの痕跡も持っていました:

キャッチされていない翻訳エラー:Java.lang.IllegalArgumentException:既に追加されています:Lcom/mypackage/ClassX;

問題は、2つの異なるライブラリに同じクラスを追加していたことです。いずれかのライブラリからクラス/ jarファイルを削除すると、プロジェクトは正しく実行されます。

1
mromer

私にとっては私は全体のプレイストアの依存関係を追加していました

「com.google.Android.gms:play-services:8.4.0」をコンパイルします。

しかし、私はグーグルマップだけを必要としたので、私はそれをより具体的にし、そしてエラーは解決された。

「com.google.Android.gms:play-services-maps:8.4.0」をコンパイルします。

1
Ajji

確実に機能する2つの選択肢があります。

  1. プロジェクトをきれいにしてからビルドしてください。

上記の方法でうまくいかなかった場合は、次の方法を試してください。

  1. アプリレベルでbuild.gradleファイルに以下を追加します。

    defaultConfig {   
    
    multiDexEnabled true
    
    }
    
1
Udit Kapahi

このエラーは、ライブラリの使用数が多いために発生します。私の場合は、 'comp' com.google.Android.gms:play-services-9.4.0 'でこのエラーが発生しました。 Google Playサービスの依存関係を追加しながら、必要なライブラリのみを指定します。デフォルトでは、すべてのライブラリが含まれています。

0
Rajesh.k

プロジェクトをKotlinに変換した後に同じエラーが発生しました。私の問題は、処理中に私のjreの場所が無効なパスに変更されたことです(なぜこれが起こるのだろうか...私は時間を無駄にしました)。こうすることでそれを修正しました:

File > Project Structure > SDK Location 

古いJDKインストールを指していたUse embedded JDKオプションのチェックを外し、正しいものを選択しました。

/home/my_user/jdk1.8.0_101

これを変更した後、エラーは消えました

0
voghDev

私のために働きました:)

私は以前にそれが7だった最新バージョン8にJavaをアップグレードし、次にモジュールの設定を右クリックしてprojectをクリックし、jdkパスを/ usr/libに変更しました。/jvm/Java-8-Oracleインストールされた新しいJava 8。そしてスタジオを再起動します

/ usr/lib/jvmでJava 8のフォルダ名を確認してください。

私はubuntuを使っています enter image description here

0
jayant singh

何が正確にエラーを引き起こしているのかを知りたい場合は、./gradlew assembleDebug --stacktrace --debugのように、gradle terminalでプロジェクトをビルドしてみてください。私の場合com.Android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536で以下のエラーを見ました

これは、Googleマップを自分のプロジェクトに統合しようとしたときに起こりました。それを修正するために、私は単に私が含めていたライブラリをチェックしました

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

私は単にそれをに変更しました

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

そして問題はなくなった

0
NecipAllef

あなたはPCにあなたの装置を接続するために低品質のケーブル/欠陥のあるケーブルを使っているかもしれません、私はケーブルを交換しました、そしてそれは私のために働きました。

0
Mushtaq Jameel

私の場合、問題は23.0.0 rc3であるツールのバージョンをビルドすることでした、そして私は22.0.1に変更し、私の問題を修正しました。

0
max

あなたのgradle.buildファイルで、これを使ってください

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

そしてそれはうまくいきます。

0
Rishabh Mahatha