Java เสร็จสิ้นด้วยค่าออกที่ไม่ใช่ศูนย์ 2 - Android Gradle


135

ฉันได้รับข้อผิดพลาดนี้ในการเรียกใช้แอป Android ของฉัน (ฉันทำความสะอาดแล้วสร้างขึ้น แต่ข้อผิดพลาดยังคงอยู่)

  • ซิงค์: ตกลง
  • สร้างโครงการ: ตกลง
  • ทำความสะอาด: ตกลง
  • เรียกใช้: ข้อผิดพลาด

ข้อผิดพลาด: การดำเนินการล้มเหลวสำหรับงาน ': app: dexDebug' .com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: กระบวนการ 'คำสั่ง' 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: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')

และใช้งานได้ดี


2
@JaredBurrows ปัญหาในกรณีของฉันคือแอปของฉันรวบรวมไลบรารีสองครั้ง .. หนึ่งใน "คอมไพล์ fileTree" (รวบรวมไดเร็กทอรี libs ทั้งหมดของคุณ) และ "คอมไพล์ ****"
Maverick.pe

กรุณาโพสต์คำตอบและทำเครื่องหมายว่าถูกต้องได้ไหม
Jared Burrows

@JaredBurrows เสร็จแล้ว ขอบคุณ
Maverick.pe

โปรดตรวจสอบโพสต์ของฉันที่นี่stackoverflow.com/a/33387368/740372
Sanjoy Saha

ฉันมีข้อผิดพลาดเดียวกัน แต่ไฟล์ gradle ของฉันไม่มีคอมไพล์มากนัก กรุณาช่วย. ฉันโพสต์คำถามนี้: stackoverflow.com/questions/34558251/… ฉันยังใหม่กับการพัฒนา Android
Ayusch

คำตอบ:


205

ปัญหานี้ค่อนข้างน่าจะเกิดจากการใช้เกินขีด จำกัด dex 65K ที่กำหนดโดย Android ปัญหานี้สามารถแก้ไขได้โดยการล้างโปรเจ็กต์และลบไลบรารีและเมธอดที่ไม่ได้ใช้บางส่วนออกจากการอ้างอิงใน build.gradle หรือโดยการเพิ่มการรองรับแบบมัลติ

ดังนั้นหากคุณต้องเก็บไลบรารีและวิธีการไว้คุณสามารถเปิดใช้งานการสนับสนุน multi dex ได้โดยการประกาศในการกำหนดค่า gradle

defaultConfig {        
    // Enabling multidex support.
    multiDexEnabled true
}

คุณสามารถอ่านเพิ่มเติมเกี่ยวกับการสนับสนุน multidex และการพัฒนาแอพพลิเคที่มีมากกว่า 65K วิธีการที่นี่


ดีใจที่ช่วยคุณได้ @ David
minhazur

2
ขอบคุณมากที่ช่วยฉัน
Aayushi

4
และหลังจากนั้นแทนที่เมธอดในคลาสเริ่มต้น: @Override protected void attachBaseContext (Context base) {super.attachBaseContext (base); MultiDex.install (นี้); }
Gent Berani

ว้าวมันใช้งานได้ดี ไม่เคยคิดว่านี่อาจเป็นปัญหา
Neela

หากคุณต้องการที่จะเห็นว่าเป็นสิ่งที่ก่อให้เกิดข้อผิดพลาดให้ลองสร้างโครงการของคุณผ่านทางสถานี gradle ./gradlew assembleDebug --stacktrace --debugเช่นนี้ ฉันเห็นข้อผิดพลาดนี้ในกรณีของฉันcom.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
NecipAllef

93

สำหรับฉันปัญหาคือฉันใส่รหัสไลบรารีที่ไม่จำเป็นใน build.gradle

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

ซึ่งก่อให้เกิดวิธีการมากกว่า 65k ดังนั้นจึงลบออก, 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 ของแอปเหล่านี้

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 class และรวม method นี้ไว้ภายในคลาส ..

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

ยังรวมอยู่ในวิธี OnCreate ด้วย

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

2
นี่เป็นทางออกที่ดีที่สุดคุณควรรวมเฉพาะไลบรารีที่คุณใช้งานจริงเท่านั้น
Roisgoen

2
ได้ผล !! เปลี่ยน "compile" com.google.android.gms: play-services: 7.5.0 "" เป็นคอมไพล์ "com.google.android.gms: play-services-identity: 8.1.0" compile "com.google.android gms: play-services-plus: 8.1.0 "
Oscar Calderon

1
สิ่งที่ดียังอ้างถึง: developers.google.com/android/guides/setup - ให้รายชื่อห้องสมุดต่างๆ
Ed Manners

@ edsappfactory.com ฉันอ้างถึงสิ่งนั้นใช้และแก้ไข
Amit Tumkur

32

ในกรณีที่มีคนยังคงดิ้นรนกับปัญหานี้และไม่รู้ว่าเหตุใดจึงเกิดขึ้นและจะแก้ไขอย่างไร ในความเป็นจริงข้อผิดพลาดนี้

ข้อผิดพลาด: การดำเนินการล้มเหลวสำหรับงาน ': 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 ของคุณดังนั้นอย่าเสียเวลาไปในทางที่ผิด นี่คือสองสาเหตุหลักที่ทำให้สิ่งนี้เกิดขึ้น

  1. คุณมีไลบรารีหรือไฟล์ jar เดียวกันรวมอยู่หลายแห่งและบางแห่งก็ขัดแย้งกัน
  2. คุณกำลังจะถึงหรือเกินขีด จำกัด เมธอด 65k แล้ว

กรณีแรกสามารถแก้ไขได้ดังนี้ค้นหาการอ้างอิงที่คุณรวมไว้หลายครั้ง ในการดำเนินการนี้ให้รันคำสั่งต่อไปนี้ใน android studio terminal

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ไม่เพียงพอในความเป็นจริงเกี่ยวกับอุปกรณ์ทั้งหมดที่ใช้หุ่นยนต์ <5 NoClassDefFoundErrorอมยิ้มก็จะส่งผลให้เกิดพฤติกรรมที่ไม่คาดคิดและ วิธีแก้ปัญหามีอธิบายไว้ที่นี่


18

ฉันไม่รู้ (ตอนนั้น) ว่า"คอมไพล์ 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')

และใช้งานได้ดี ขอบคุณต่อไป! ความผิดฉันเอง.


5
หรือในทางกลับกัน: แสดงความคิดเห็นcompile fileTree(dir: 'libs', include: ['*.jar'])ใน gradle มันช่วยฉันได้
Tomasz Mularczyk

มีวิธีแก้ไขอื่น ๆ เกี่ยวกับปัญหานี้หรือไม่? ฉันไม่ได้รวบรวมไฟล์ jar แต่ละไฟล์ แต่ใช้บรรทัดนี้แทนcompile fileTree(dir: 'libs', include: ['*.jar'])แต่ก็ยังคงแสดงข้อผิดพลาดเดียวกัน
Kairi San

9

ฉันมีปัญหาเดียวกันและฉันได้แก้ไขการนำไลบรารีที่ไม่จำเป็นออกแล้ว

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

ฉันลบไลบรารีนั้นออกและฉันสามารถเรียกใช้โครงการได้โดยไม่มีปัญหา


ฉันพยายามเพิ่มคลาสเลื่อนเมนูและลบสิ่งนี้ออกจากชั้นประถมศึกษาของฉันได้ผลสำหรับฉัน ขอบคุณ! :)
Lucas Senechal

6

ฉันได้รับการแก้ไขโดยการเปิดใช้งาน multiDex สำหรับการสร้างดีบัก

defaultConfig {
multiDexEnabled true
}

6

ฉันปฏิเสธ Embedded JDK (เป็น 32 บิต) เนื่องจากJDK ในตัวคือ 64 บิต

คลิกขวาที่โครงการของคุณ -> เปิดการตั้งค่าโมดูล -> ตำแหน่ง SDK -> ยกเลิกการเลือกใช้ JDk ในตัวจากนั้นตั้งค่าเส้นทาง JDK ของคุณเช่นใน Ubuntu / usr / lib / jvm / java-8-openjdk-i386


1
ฉันคิดว่ามันใช้งานได้เพราะ JDK ในตัวคือ 64 บิต ฉันมีปัญหาเดียวกันกับเครื่อง 32 บิตของฉัน
Lukas Novak

สิ่งนี้แก้ไขปัญหาในเครื่อง 32 บิตของฉัน echo $JAVA_HOMEสำหรับเส้นทาง
ตัวอย่าง SANBI

ใช่ฉันรู้ว่ามันเกี่ยวข้องกับเครื่องของฉันเป็น 32 บิต ขอบคุณ Zacharia - บันทึกวันของฉัน!
Ilonpilaaja

5

ปัญหาที่เป็นไปได้: คุณใช้วิธี dex 65k เกินขีด จำกัด อาจเป็นเพราะคุณเพิ่มไลบรารีหรือหลายวิธีก่อนที่ปัญหาจะเกิดขึ้น?


1
ไม่มาก.. เพียงไม่กี่วิธี
Maverick.pe

ลองสร้างโครงการเวอร์ชันก่อนหน้าหรือลบไลบรารีที่ไม่ได้ใช้ (ies) ถ้าเป็นไปได้และสร้างใหม่
Artem Zinnatullin

ฉันมีวิธีการเพียงไม่กี่วิธีเช่นกัน
ธนูฮัน

3

หากคุณได้อัปเดต SDK ของคุณแล้วและคุณยังใช้ Google-play-services ด้วยคุณจะต้องดูแลการพึ่งพาเนื่องจากมีบางอย่างที่สับสนกับ:

ทำตามด้านล่าง: รวบรวม 'com.google.android.gms: play-services: +' Replace by compile 'com.google.android.gms: play-services: 6.5.87'

หมายเหตุ: นี่ '6.5.87' คือเวอร์ชันบริการของ Google-Play ฉันหวังว่ามันจะช่วย ..


2

ฉันคิดว่ามันขัดแย้งกับไฟล์. jar ในโปรเจ็กต์ของคุณ

ฉันได้ลบ android-support-v4.jar ออกจากโฟลเดอร์ libs แล้วและมันใช้งานได้ !!!

หากโครงการของคุณมีข้อผิดพลาดให้ตรวจสอบในไฟล์ build.gradle ของคุณ

การอ้างอิง {

}


2

ในกรณีของฉันปัญหาคือไลบรารีใหม่ (การพึ่งพาการไล่ระดับสี) ที่ฉันเพิ่มขึ้นนั้นอาศัยการอ้างอิงอื่น ๆ และการอ้างอิงพื้นฐานสองอย่างนั้นขัดแย้ง / ขัดแย้งกับการอ้างอิงบางส่วนของไลบรารี / การอ้างอิงอื่น ๆ ในสคริปต์การสร้างของฉัน โดยเฉพาะอย่างยิ่งฉันได้เพิ่ม Apache Commons Validator(สำหรับการตรวจสอบอีเมล) และการอ้างอิงสองรายการ (Apache Commons Loggingและ Apache Commons Collections) ขัดแย้งกับที่ใช้โดย Robolectric (เนื่องจากมีไลบรารีเดียวกันในเวอร์ชันต่างๆอยู่ในเส้นทางการสร้างของฉัน) ดังนั้นฉันจึงยกเว้นเวอร์ชันที่ขัดแย้งกันของการอ้างอิง ( modules) เมื่อเพิ่มการอ้างอิงใหม่ (the Validator):

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

คุณสามารถดูการอ้างอิงของโมดูลการไล่ระดับของคุณ (คุณอาจมีเพียงโมดูลเดียวในโปรเจ็กต์ของคุณ) โดยใช้คำสั่ง gradle ต่อไปนี้ (ฉันใช้ gradle wrapper ที่สร้างขึ้นสำหรับคุณหากคุณสร้างโปรเจ็กต์ใน Android Studio / Intellij ความคิด) รันคำสั่งนี้ในไดเร็กทอรีรูทของโปรเจ็กต์ของคุณ:

./gradlew: YOUR-MODULE-NAME: การอ้างอิง

หลังจากเพิ่มexcludeคำสั่งเหล่านั้นและลองเรียกใช้อีกครั้งฉันได้รับduplicate fileข้อผิดพลาดNOTICE.txtว่ามีการใช้ไลบรารีคอมมอนส์ของ apache เช่น Logging และ Collections ฉันต้องแยกไฟล์ข้อความนั้นออกเมื่อบรรจุภัณฑ์ ใน build.gradle ของฉันฉันได้เพิ่ม:

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

ปรากฎว่าไลบรารีใหม่ (the Validator) สามารถทำงานร่วมกับการอ้างอิง / โมดูลที่เก่ากว่าเล็กน้อย (ซึ่งนำเข้าสู่เส้นทางการสร้างของฉันแล้วโดยไลบรารีอื่น (Robolectric)) นี่เป็นกรณีของไลบรารีเฉพาะนี้ แต่ไลบรารีอื่น ๆ อาจใช้ API ล่าสุดของการอ้างอิงพื้นฐาน (ซึ่งในกรณีนี้คุณต้องลองดูว่าไลบรารีอื่น ๆ ที่อาศัยโมดูล / การพึ่งพาที่ขัดแย้งกันสามารถทำงานกับ เวอร์ชันที่ใหม่กว่า (โดยการยกเว้นเวอร์ชันเก่าของโมดูล / การพึ่งพาภายใต้รายการของไลบรารีเหล่านั้น))


1

ในกรณีของฉันฉันได้รับข้อผิดพลาดนี้เมื่อมี 2 ไลบรารีขึ้นไปขัดแย้งกัน (ไลบรารีเดียวกัน แต่ต่างเวอร์ชัน) ตรวจสอบแอป build.gradle ของคุณในบล็อกการอ้างอิง


1

มีสองทางเลือกที่จะได้ผลอย่างแน่นอน:

  1. ทำความสะอาดโครงการของคุณแล้วสร้าง

หากวิธีข้างต้นไม่ได้ผลให้ลองทำตามขั้นตอนต่อไป

  1. เพิ่มสิ่งต่อไปนี้ในไฟล์ build.gradle ที่ระดับแอพ

    defaultConfig {   
    
    multiDexEnabled true
    
    }
    

ฉันลองทั้งสองอย่าง แต่มีข้อผิดพลาดใหม่Error:Execution failed for task ':app:packageAllDebugClassesForMultiDex'. > java.util.zip.ZipException: duplicate entry: android/support/v4/view/MotionEventCompatEclair.classฉันควรทำอย่างไรต่อไป
Kairi San


ข้อผิดพลาดนี้เกิดขึ้นเนื่องจากแพ็กเกจซ้ำ / เหมือนกันในโครงการของคุณ
Udit Kapahi

1

การอัปเดต Java SDK ของฉันเป็นเวอร์ชันล่าสุด1.7.0_79และการอัปเดตSDK Locationภายใต้Project Structureช่วยแก้ปัญหาให้ฉันได้


1

ปัญหาของฉันคือนอกเหนือจากการมี

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;

ปัญหาคือฉันเพิ่มคลาสเดียวกันในไลบรารี differents สองแห่ง การลบไฟล์คลาส / jar ออกจากไลบรารีหนึ่งโปรเจ็กต์จะทำงานอย่างถูกต้อง


แน่นอนฉันมีปัญหาเดียวกันลายเซ็นคลาสเดียวกันโชคดีที่เป็นชั้นเรียนของฉันฉันจึงปรับโครงสร้างใหม่ ฉันเขียนคำตอบที่นี่: stackoverflow.com/a/35045501/3397345
Davideas

1

สำหรับฉันฉันกำลังเพิ่มการอ้างอิง playstore ทั้งหมด

คอมไพล์ 'com.google.android.gms: play-services: 8.4.0'

แต่ฉันต้องการแผนที่ Google เท่านั้นดังนั้นฉันจึงทำให้เฉพาะเจาะจงมากขึ้นและข้อผิดพลาดได้รับการแก้ไขแล้ว

คอมไพล์ 'com.google.android.gms: play-services-maps: 8.4.0'


0

ในกรณีของฉันปัญหาคือสร้างเวอร์ชันเครื่องมือซึ่งเป็น23.0.0 rc3และฉันเปลี่ยนเป็น 22.0.1 และปัญหาของฉันได้รับการแก้ไข


0

คุณอาจใช้สายเคเบิลคุณภาพต่ำ / สายเคเบิลที่ชำรุดเพื่อเชื่อมต่ออุปกรณ์ของคุณกับพีซีฉันเปลี่ยนสายเคเบิลแล้วและใช้ได้


0

ข้อผิดพลาดนี้เกิดจากการใช้ไลบรารีจำนวนมากขึ้นในกรณีของฉัน 'compile' com.google.android.gms: play-services-9.4.0 'ทำให้เกิดข้อผิดพลาดนี้เพื่อหลีกเลี่ยงข้อผิดพลาดนี้ให้ใช้ไลบรารีที่จำเป็นตัวอย่างเช่นหากคุณต้องการ เพื่อใช้แผนที่ในแอปของคุณจากนั้นใช้คอมไพล์ 'com.google.android.gms: play-services-maps: 9.4.0' ในขณะที่การเพิ่มการพึ่งพาบริการ Google Play ระบุไลบรารีที่จำเป็นเท่านั้นโดยค่าเริ่มต้นจะรวมไลบรารีทั้งหมด



0

หากคุณต้องการที่จะเห็นว่าเป็นสิ่งที่ก่อให้เกิดข้อผิดพลาดให้ลองสร้างโครงการของคุณผ่านทางสถานี 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'

และปัญหาก็หายไป


0

Kotlinผมมีข้อผิดพลาดเดียวกันหลังจากการแปลงโครงการของฉันไป ปัญหาของฉันคือตำแหน่ง jre ของฉันถูกเปลี่ยนเป็นเส้นทางที่ไม่ถูกต้องในระหว่างกระบวนการ (ฉันสงสัยว่าทำไมสิ่งนี้จึงเกิดขึ้น ... ทำให้ฉันเสียเวลา) แก้ไขโดยทำสิ่งนี้:

File > Project Structure > SDK Location 

ยกเลิกการUse embedded JDKเลือกตัวเลือกซึ่งชี้ไปที่การติดตั้ง JDK เก่าและเลือกตัวเลือกที่ถูกต้อง:

/home/my_user/jdk1.8.0_101

หลังจากเปลี่ยนสิ่งนี้ข้อผิดพลาดจะหายไป


0

ทำงานเพื่อฉัน :)

ฉันอัปเกรด java เป็นเวอร์ชันล่าสุด 8 ก่อนหน้านี้เป็น 7 จากนั้นไปที่OPEN MODULE SETTING คลิกขวาที่ proj ect และเปลี่ยนเส้นทาง jdk เป็น / usr / lib / jvm / java-8-oracle java 8 ใหม่ที่ติดตั้ง และรีสตาร์ทสตูดิโอ

เช็คอิน / usr / lib / jvm สำหรับชื่อโฟลเดอร์ java 8

ฉันใช้ Ubuntuป้อนคำอธิบายภาพที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.