“ การแปลงเป็นรูปแบบ Dalvik ล้มเหลวโดยมีข้อผิดพลาด 1” บน JAR ภายนอก


908

ในแอปพลิเคชัน Android ของฉันใน Eclipse ฉันได้รับข้อผิดพลาดดังต่อไปนี้

ข้อยกเว้นระดับบนสุดที่ไม่คาดหมาย:
java.lang.IllegalArgumentException: เพิ่มแล้ว: Lorg / xmlpull / v1 / XmlPullParser;
....
การแปลงเป็นรูปแบบ Dalvik ล้มเหลวโดยมีข้อผิดพลาด 1

ข้อผิดพลาดนี้จะปรากฏเฉพาะเมื่อฉันเพิ่มไฟล์ JAR ภายนอกเฉพาะลงในโครงการของฉัน ฉันค้นหาเวลานานในการหาวิธีแก้ปัญหาที่เป็นไปได้ แต่ไม่มีวิธีแก้ไขปัญหาที่เป็นไปได้

ฉันพยายามเปลี่ยนเป็น Android 1.6 แทน 1.5 (เวอร์ชั่นปัจจุบันที่ฉันใช้)


Acticle นี้อาจช่วยคุณแก้ไขข้อผิดพลาดนี้ในกรณีที่คุณใช้โครงการห้องสมุดในพื้นที่ทำงานของคุณ
เหงียนมินห์บินห์

4
ฉันลองมันและมันก็ให้ข้อผิดพลาดเดียวกัน ในที่สุดฉันก็แก้ไขได้โดยการเพิ่มไลบรารีใน Properties-> JavaBuildPath-> Projects และเพิ่มไลบรารีที่นั่น มันเรียกว่า "วัตถุที่จำเป็นในการสร้างเส้นทาง:"

27
ปัญหานี้ได้กลายเป็นโหดร้ายสำหรับฉัน มันเกือบจะเพียงพอที่จะยอมแพ้การเข้ารหัส Android วิธีการแก้ปัญหาไม่ทำงานสำหรับฉัน ฉันเพียงแค่ต้องพยายามส่งออกล้มเหลวด้วยข้อผิดพลาด Dalvik 1 อย่างต่อเนื่องและในที่สุดมันก็จะประสบความสำเร็จ ใช้เวลา 15-30 นาทีในการสร้างรุ่นวางจำหน่าย มันเป็นหายนะที่สมบูรณ์
Anthony

หากคุณใช้คอมพิวเตอร์สองเครื่องในหนึ่งเวิร์กสเปซที่มีซอฟต์แวร์แชร์ไฟล์บางครั้งก็ทำซ้ำเวิร์กสเปซ -> project-> bin-> โฟลเดอร์ com เป็น com 1, com 2 เพียงแค่ลบทุกอย่างด้วย 1 หรือ 2 ทำความสะอาดโครงการของคุณ ไป.
Ozan Atmar

คำตอบ:


826

ไปที่โครงการ»คุณสมบัติ»เส้นทาง Java Build »ไลบรารีและลบทั้งหมดยกเว้น "Android XY" (ในกรณีของฉัน Android 1.5) คลิกตกลง ไปที่โครงการ»ล้าง»ล้างโครงการที่เลือกด้านล่าง»เลือกโครงการของคุณแล้วคลิกตกลง ว่าควรจะทำงาน

เป็นไปได้ว่าคุณมีไฟล์ JAR อยู่ในโฟลเดอร์โครงการของคุณ (ฉันได้คัดลอกไฟล์ Admob JAR ไปยังโฟลเดอร์ src ของฉัน) แล้วเพิ่มมันเป็น Java Path Library มันไม่ปรากฏขึ้นภายใต้ Package Explorer ดังนั้นคุณจึงไม่สังเกต แต่จะนับสองครั้งทำให้เกิดข้อผิดพลาด Dalvik 1

อีกสาเหตุที่เป็นไปได้อาจเป็นความขัดแย้งของชื่อแพคเกจ สมมติว่าคุณมีแพคเกจcom.abc.xyzและคลาสที่มีชื่อA.javaอยู่ในแพ็คเกจนี้และโครงการห้องสมุดอื่น (ซึ่งถูกเพิ่มไปยังการพึ่งพาของโครงการนี้) ซึ่งมีเหมือนกันcom.abc.xyz.A.javaจากนั้นคุณจะได้รับข้อผิดพลาดเดียวกันแน่นอน หมายความว่าคุณมีการอ้างอิงหลายไฟล์ในไฟล์เดียวกันA.javaและไม่สามารถสร้างได้อย่างถูกต้อง

ในทางอื่นอาจเกิดขึ้นได้หากคุณแก้ไขหรือเพิ่มสิ่งใด ๆ ในไฟล์ class path ด้วยตนเองในบางกรณีเราอาจเพิ่มเส้นทาง android.jar ด้วยตนเองไปยังไฟล์ classpath สำหรับการสร้าง java doc เมื่อลบ javadoc ที่สร้างขึ้น รหัสจะทำงานได้ดีโปรดตรวจสอบเรื่องนี้ด้วยหากมีสิ่งใดเกิดขึ้น


4
ฉันมีปัญหาเดียวกันและขั้นตอนข้างต้นโดย user408841 ทำงานให้ฉัน
Arunabh Das

112
สวัสดี มันแก้ไขให้ฉันเพียงแค่ไปที่ "โครงการ»ล้าง»ล้างโครงการที่เลือกด้านล่าง»เลือกโครงการของคุณแล้วคลิกตกลง" ไม่สนใจบิตแรก
Kurru

79
ฉันค่อนข้างสับสนกับวิธีนี้ หากคุณลบไฟล์ jar และไลบรารีทั้งหมดคุณจะคอมไพล์โปรเจ็กต์สำเร็จอย่างไร?
Cheok Yan Cheng

3
ฉันพบว่าวิธีเดียวที่ได้ผลสำหรับฉันก็คือทำความสะอาดโครงการทั้งหมด! โดยเฉพาะอย่างยิ่งโครงการที่ละเมิดนั้นขึ้นอยู่กับ
Roy Hinkley

7
ฉันยังใหม่ต่อการพัฒนา Android ที่มาจาก. NET และตามจริงแล้วข้อผิดพลาดนี้เป็นตัวอย่างที่ชัดเจนถึงประสบการณ์ของฉันกับมัน อย่างจริงจัง ... คุณหมายถึงอะไรเกี่ยวกับข้อความแสดงข้อผิดพลาดนั้น มันไร้ความหมายโดยสิ้นเชิง 'Dalvik' ?? คุณคืออะไร พาฉันกลับไปที่สตูดิโอเสมือนจริง: p
David Masters

271

ฉันแก้ไขปัญหา

นี่เป็นข้อขัดแย้งของไฟล์ JAR

ดูเหมือนว่าฉันมีไฟล์ JAR สองไฟล์บน buildpath ของฉันซึ่งมีแพ็กเกจและคลาสเดียวกัน

smack.jar และ android_maps_lib-1.0.2

การลบแพ็กเกจนี้จากไฟล์ JAR ไฟล์ใดไฟล์หนึ่งสามารถแก้ไขปัญหาได้


18
+1 - โดยสรุปนี่เป็นข้อขัดแย้งของไฟล์ JAR โดยเฉพาะนี้อาจจะมีความขัดแย้งในการใด ๆสองไฟล์ JAR ในกรณีของฉันความขัดแย้งเกิดขึ้นระหว่าง jackson-all-1.7.4.jar, jackson-core-asl-1.5.4.jar และ jackson-mapper-asl-1.5.4.jar ฉันลบ 1.5.4 JAR สองอันแล้วออกจาก 1.7.4 ทั้งหมด
jmort253

หากคุณมีไหในโครงการห้องสมุดใด ๆ ที่คุณเพิ่มในโครงการของคุณเองเช่นที่ฉันเพิ่มScoreloopUIโครงการลงในเกม AndEngine ของฉันไหเหล่านี้จะรบกวนคุณด้วยแม้ว่าจะไม่ได้อยู่ในเส้นทางการสร้างโครงการของคุณเอง
pqn

1
ฉันได้ระบุ android-sdk / platforms / android-10 / android.jar ด้วยตนเองใน. classpath จากนั้นฉันเปลี่ยนเป็น 2.3.3 (Android 10) ในคุณสมบัติของโครงการซึ่งทำให้ทั้ง android.jar ขัดแย้งกัน การลบส่วนเกินใน Java Build Path ทำเคล็ดลับ
styler1972

2
ในด้านของฉันความขัดแย้งมาจาก ActionbarSherlock ซึ่งรวมถึงแพคเกจสนับสนุน android ที่คอมไพล์รวมสองครั้ง
โทเบียส

สำหรับข้อมูล: ในกรณีของฉันเนื่องจากความล้มเหลวมันเป็นเป้าหมาย Android ที่แตกต่างกันไม่เหมือนกันในทั้งสองโครงการ: android: targetSdkVersion = "xx"
Andreas Mattisson

126

โซลูชัน Windows 7:

ยืนยันปัญหาเกิดจากบรรทัดคำสั่ง ProGuard ในไฟล์
[ไดเรกทอรีการติดตั้ง Android SDK] \ tools \ proguard \ bin \ proguard.bat

แก้ไขบรรทัดต่อไปนี้จะช่วยแก้ปัญหา:

call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %*

ถึง

call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %1 %2 %3 %4 %5 %6 %7 %8 %9

สิ่งนี้ไม่ได้ผลสำหรับฉัน แต่การแสดงความคิดเห็นในสายพรานจากไฟล์ default.properties ของฉันทำให้ข้อผิดพลาดหายไป ปัญหาของฉันดูเหมือนจะเกี่ยวข้องกับ proguard อย่างใด ฉันเพิ่งได้รับ "การแปลงเป็นรูปแบบ Dalvik ล้มเหลวด้วยข้อผิดพลาด 1" เมื่อพยายามส่งออกโครงการ ความคิดใด ๆ
เบ็น H

ฉันลองคำแนะนำข้างต้นอีกครั้งและลบและเพิ่มโครงการห้องสมุด LVL ของฉันอีกครั้งและตอนนี้ก็ใช้งานได้ ไม่แน่ใจว่าแก้ไขอะไร แต่มันใช้งานได้ดี ขอบคุณพระเจ้า. ฉันเสียเวลากับเรื่องนี้
Ben H

Windows Vista และสิ่งนี้ใช้ได้สำหรับฉัน ก่อนหน้านี้ฉันได้ลองเปลี่ยนเส้นทางของ SDK เป็น progra ~ 2 ติดตั้งใหม่ทำความสะอาดโครงการลบไลบรารีและแก้ไข ฯลฯ ... ดังนั้นขอบคุณ Noah!
Mudar

ขอบคุณมากสำหรับโนอาห์สิ่งนี้ใช้ได้กับฉันใน Windows 7 ข้อผิดพลาดเริ่มต้นหลังจากฉันอัปเดต ADT เป็นรุ่น 12
Kevin

แก้ไขปัญหาของฉันใน Windiws 7
poiuytrez

94

คุณสามารถแก้ปัญหานี้ได้อย่างง่ายดาย (ด้วยเครื่องมือสำหรับนักพัฒนา Eclipse Android, Build: v22.0.1-685705) โดยปิดเมนู> "โครงการ"> "สร้างโดยอัตโนมัติ" ขณะที่ส่งออกแอปพลิเคชัน Android ที่ลงนามแล้ว หลังจากนั้นอย่าลืมเปิดอีกครั้ง


2
สิ่งนี้แก้ไขได้ในกรณีของฉัน ปัญหาเกิดขึ้นเป็นระยะ ๆ และไม่มีสาเหตุที่ชัดเจน (เช่นขวดหรือเส้นทางที่ไม่ดี)
Dirk Conrad Coetsee

นี่ทำให้ฉันบ้า! ทางออกเดียวที่เหมาะกับฉัน สงสัยว่าทำไม
PrivusGuru

1
วิธีนี้แก้ไขได้สำหรับฉัน - โซลูชันอื่น ๆ อาจช่วยได้เช่นกัน แต่อันนี้เป็นโซลูชั่นสุดท้ายก่อนที่จะนำไปใช้งานได้
pertz

ฉันใช้เวลา 4 ชั่วโมงในการทำงานผ่านทุกข้อเสนอแนะที่ฉันสามารถหาได้ ขอบคุณ - มันแก้ไขปัญหาได้ทันที
Squonk

ทางออกที่ง่ายมาก แต่ใช้งานได้! ช่วยฉันสองสามชั่วโมงในการต่อสู้กับ Eclipse ลองใช้ก่อนที่คุณจะลองวิธีแก้ปัญหาที่ซับซ้อนกว่านี้
fragon

53

หากคุณมีการแก้ไข ADT 12+ คุณควรอัปเดต proguard ของคุณจาก 4.4 -> 4.6 (ดังที่อธิบายไว้ที่นี่ ) นอกจากนี้คุณควรปล่อยให้ไฟล์ ... \ bin \ proguard.bat ในรูปแบบเดิม

เพียงดาวน์โหลดจากเว็บและคัดลอกโฟลเดอร์ lib จากแพ็คเกจที่ดาวน์โหลดมาไปที่:

[ไดเรกทอรีการติดตั้ง Android SDK] \ tools \ proguard \ lib


3
นี่เป็นปัญหาของฉันในหลาย ๆ ADT การดาวน์โหลดและการแทนที่ JARs proguard ทำงาน
นายเอส

ว้าวขอบคุณมันคงที่สำหรับฉันแม้ว่าฉันจะต้องล้างคำเตือนบางอย่างเช่นกัน stackoverflow.com/q/4525661/38258
Nick Gotch

ฉันเปลี่ยนรุ่น proguard จาก 4.4 เป็น 4.9 หลังจากนั้นปัญหาของฉันยังคงไม่ถูกแก้ไข
Hiren Patel

1
ฉันต้องทำด้วยตัวเองเริ่มจาก 4.7 -> 4.11 (ล่าสุด ณ ตอนนี้ที่นี่: sourceforge.net/projects/proguard/files ) ฉันเพิ่งเปลี่ยนชื่อ<sdk>/tools/proguarddir เก่าและย้ายproguard4.11dir ที่unzipped สมบูรณ์ไปยังเส้นทางเก่า Voila! ตอนนี้ถ้าเพียง แต่ฉันจะได้รับชั่วโมงก่อนหน้าของฉัน ... -_-
qix

1
ขอบคุณ! นี่แก้ปัญหาของฉันถูกต้อง ปัญหาของฉันเกิดขึ้นเมื่อฉันอัปเดต sdk ของฉันจาก sdk manager และ proguard ได้รับการรีเซ็ตเป็นเวอร์ชั่นดั้งเดิมที่มาพร้อมกับ api ระดับ 11 หลังจากที่ฉันอัปเดต proguard, jar เป็นเวอร์ชันล่าสุด และมันใช้งานได้! การอ้างอิงของฉัน: java.dzone.com/articles/my-reminder-how-fix-conversion
mmw5610

41

แก้ไข (โซลูชันใหม่):

ดูเหมือนว่าโซลูชันก่อนหน้านี้เป็นเพียงการบายพาส ฉันจัดการเพื่อแก้ไขปัญหาอย่างถาวรในที่สุด: ในกรณีของฉันมีข้อผิดพลาดในไฟล์ android-support-v4 ในโครงการของฉันและในโครงการ Facebook ที่อ้างอิงในโครงการของฉัน

ฉันพบข้อผิดพลาดนี้โดยการตรวจ Lint (เครื่องมือ Android / Run Lint: ตรวจหาข้อผิดพลาดทั่วไป)

โซลูชันก่อนหน้าของฉัน:

ฉันได้ลองวิธีแก้ปัญหาที่เป็นไปได้ในเว็บไซต์นี้ - ไม่มีอะไรช่วย !!!

ในที่สุดฉันก็พบคำตอบได้ที่นี่: https://groups.google.com/forum/#!topic/actionbarsherlock/drzI7pEvKd4

ขั้นตอนง่าย ๆ :

ไปที่โครงการ -> ยกเลิกการเลือกสร้างโดยอัตโนมัติ

ไปที่โครงการ -> ล้าง ... ทำความสะอาดทั้งโครงการห้องสมุดและโครงการแอปของคุณ

ส่งออกแอปของคุณเป็น APK ที่ลงชื่อขณะที่ Build ยังคงปิดใช้งานโดยอัตโนมัติ


ขอบคุณที่ทำงานให้ฉันสำหรับโครงการ cocos2dx js ของฉันโดยใช้ adt eclipse 23
snowflakes74

ข้อผิดพลาด: ตัวเลือกที่ไม่รู้จัก '0409' ในอาร์กิวเมนต์หมายเลข 1
Iman Marashi

30

นี่เป็นอีกสถานการณ์และวิธีแก้ไข:

หากคุณพบปัญหานี้หลังจากอัปเดต ADT สำหรับ Eclipse:

  1. ในโครงการแอพของคุณตรวจสอบว่ามีซอร์สโฟลเดอร์ใด ๆ ที่เชื่อมโยงซึ่งชี้ไปยังโครงการห้องสมุดของคุณ (มีชื่อในรูปแบบ "LibraryName_src")
  2. เลือกโครงการเหล่านั้นทั้งหมดคลิกขวาเลือก " Build Path " -> " ลบออกจาก Build Path "
  3. เลือก " ยกเลิกการเชื่อมโยงโฟลเดอร์จากโครงการ " และคลิก " ใช่ "
  4. ทำความสะอาดสร้างใหม่และปรับใช้โครงการอีกครั้ง

ดูเหมือนว่าเหตุผลคือ ADT ที่เชื่อมโยงไลบรารีซอร์สโฟลเดอร์โปรเจ็กต์เวอร์ชันก่อนหน้านี้กับโปรเจ็กต์ "ชายด์" และชุดค่าผสม ADT / Dex ปัจจุบันไม่สามารถทำงานร่วมกับโซลูชันนั้นได้อีกต่อไป

แก้ไข: นี่คือการยืนยันโดยรายการบล็อก Android Dev โดยเฉพาะอย่างยิ่งคนนี้ - ดูวรรค 8 เป็นต้นไป


1
นี่คือไกลโดยคำตอบที่เป็นประโยชน์มากที่สุดในการปัญหาเฉพาะของฉัน ขอบคุณมาก!!!
Bill The Ape

นี่คือสิ่งที่ฉันสามารถใช้ได้อย่างประสบความสำเร็จไม่ใช่คำตอบที่ upvoted อย่างสูงโดยผู้ใช้ 408841
rics

29

ไปที่โครงการแล้วยกเลิกการเลือก "สร้างโดยอัตโนมัติ" จากนั้นลองส่งออกโครงการและข้อผิดพลาดจะหายไป


27

สิ่งนี้อาจเกิดขึ้นได้หากคุณเพิ่มAndroid.jarไฟล์ลงในพา ธ บิลด์ของคุณซึ่งอาจเกิดจากการแก้ไขด่วนโดยไม่ตั้งใจใน Eclipse ลบออกด้วยการคลิกขวาโครงการ -> สร้างเส้นทาง -> กำหนดค่าเส้นทางสร้าง -> android.jarลบ


25

เพียงทำความสะอาดโครงการทำงานให้ฉันทุกครั้งที่มีข้อผิดพลาดเกิดขึ้น


การรีสตาร์ท Eclipse + การล้างโปรเจ็กต์ + การสร้างด้วยตนเองทำงานได้สำหรับฉัน
dodgy_coder

การทำความสะอาดใช้งานได้สำหรับฉัน .... ดังนั้นหากคุณมีโครงสร้างการดีบักที่ดีซึ่งคุณใช้งานบนโทรศัพท์จริงจากนั้นไปที่การปล่อยการส่งออกและดูข้อผิดพลาดนี้ ... ลองล้างโครงการทั้งหมดก่อน
lepert

16

โซลูชันของฉันและของฉันเดียวที่ฉันพบในวันนี้หลังจากสี่ชั่วโมงของการทดสอบโซลูชันทั้งหมดเป็นการรวมกันของโซลูชันที่มีให้ที่นี่:

  • Delete โครงการจาก Eclipse
  • ลบไฟล์ใน\binและ\genออกจากโฟลเดอร์โครงการ
  • ลบการอ้างอิงไปยังไลบรารีไปยัง.classpathไฟล์ในโฟลเดอร์โครงการราก
  • รีสตาร์ท Eclipse ด้วยบรรทัดรับคำสั่ง: eclipse -clean
  • Import โครงการ
  • คลิกขวาที่โครงการ - เลือกProperties> Java Build Path> Librariesและลบทุกอย่างอื่นมากกว่าAndroid XX.Y
  • ในที่สุดcleanโครงการคาดว่าจะรอการสร้างอัตโนมัติหรือBuildมัน
  • เปิดตัวและตอนนี้มันใช้งานได้! อย่างน้อยสำหรับฉัน ...

ฉันลองทุกขั้นตอนในคราวเดียวและหลาย ๆ แบบผสมกัน แต่มีเพียงขั้นตอนเดียวเท่านั้นที่ทำให้มันสำเร็จ! ฉันหวังว่าฉันจะไม่เจอหน้านี้อีก ...


มีคำเตือนจากผู้ใช้ที่ไม่ระบุชื่อว่าสิ่งนี้มีผลลัพธ์ที่ร้ายแรง ลองเสี่ยงเอง!
PaulG

มันใช้งานได้สำหรับฉัน แต่ฉันไม่ได้ทำ: "eclipse -clean" และไม่ได้ลบไลบรารี
NicoMinsk

การลบbinโฟลเดอร์ทำได้ด้วยตนเอง
boltup_im_coding

14

เพียงสำหรับคนอื่น ๆ ที่ยังคงมีปัญหานี้และพวกเขาได้ลองคำตอบข้างต้น แต่ยังได้รับข้อผิดพลาด (ซึ่งเป็นกรณีของฉัน) แล้ววิธีการแก้ปัญหาของฉันคือการลบโครงการจาก Eclipse และนำเข้าอีกครั้ง

นี่ทำให้ห้องสมุด Android ถูกเพิ่มเข้ามาในห้องสมุดอ้างอิงของฉันอีกครั้งดังนั้นตอนนี้ฉันมีไฟล์อ้างอิง Android JAR สองไฟล์ดังนั้นฉันจึงลบหนึ่งในนั้นและตอนนี้ก็รวบรวมได้ดี

การแก้ไข: ลบโครงการจาก Eclipse IDE จากนั้นนำเข้าอีกครั้งอีกครั้งจากนั้นตรวจสอบวิธีแก้ไขปัญหาข้างต้น


ขอบคุณ! สิ่งนี้ช่วยฉันให้พ้นขีดข่วน
herbertD

10

วิ่งเข้าไปหาปัญหานี้ด้วยตัวเองวันนี้ การทำความสะอาดและสร้างใหม่ไม่ได้แก้ปัญหา การลบและการนำเข้าอีกครั้งของโครงการไม่ได้ช่วยอย่างใดอย่างหนึ่ง

ในที่สุดฉันก็ติดตามมันกลับไปเป็นส่วนเสริมที่ไม่ดีในไฟล์. class ของฉัน ฉันคิดว่าสิ่งนี้ถูกเพิ่มเข้ามาโดยเครื่องมือเสริมปลั๊กอินเมื่อฉันพยายามแก้ไขปัญหาอื่นโดยการลบมันทำให้รูปแบบการสร้าง "การแปลงเป็น Dalvik ล้มเหลวโดยไม่มีข้อผิดพลาด 1"

<classpathentry kind="lib" path="C:/dev/repository/android-sdk-windows/platforms/android-3/android.jar">
    <attributes>
        <attribute name="javadoc_location" value="file:/C:/dev/repository/android-sdk-windows/docs/reference"/>
    </attributes>
    <accessrules>
        <accessrule kind="nonaccessible" pattern="com/android/internal/**"/>
    </accessrules>


9

สำหรับฉันอ้างอิง JAR พิเศษปรากฏในเส้นทางการสร้างของฉัน ฉันลบสิ่งนี้และใช้งานได้ในขณะนี้


8

ปัญหาของฉันเกิดจากการรวม ADT รุ่น 12.0 และ ProGuard จุดบกพร่องนี้ได้รับการบันทึกไว้เป็นอย่างดีและแนวทางแก้ไขอยู่ในเอกสารประกอบ

ทางแก้ไขอยู่ที่นี่

บรรทัดคำสั่ง ProGuard


ขอบคุณ Croc ฉันไม่คิดว่าข้อผิดพลาดนั้นได้รับการบันทึกไว้เป็นอย่างดี - ฉันไม่พบมันหลังจากค้นหาวิธีแก้ปัญหาหนึ่งชั่วโมง
เควิน

คุณอาจจะเขียน - ปัญหาคือข้อความแสดงข้อผิดพลาดเดียวมีสาเหตุมากเกินไป Google ควรมีข้อความเพิ่มเติมเพื่อช่วยให้ผู้ใช้ระบุปัญหา คุณจะได้รับความสะดวกสบายในความเป็นจริงมันเอาฉันสองวันในการแก้ปัญหาเมื่อฉันพบมัน ...
Croc

ความคิดเห็นที่ 11 ในหน้าการอภิปรายข้อผิดพลาดที่เชื่อมโยงสามารถแก้ไขปัญหาได้ที่นี่: ตั้งค่า build build เป็น Verbose (จากหน้าต่าง> การตั้งค่า> Android> Build) และมองหา JAR หรือคลาสที่คอมไพเลอร์ใช้อยู่ แต่ไม่ควรอยู่ที่นั่น ลบออก สร้างประสบการณ์โดยไม่มีปัญหาใด ๆ อีกครั้ง
Giulio Piancastelli

8

ฉันจัดการกับปัญหานี้เมื่อใช้ห้องสมุด Sherlock ActionBar ในโครงการของฉัน คุณสามารถทำตามขั้นตอนต่อไปนี้ได้ผลสำหรับฉัน

  1. คลิกขวาที่โครงการของคุณเลือกคุณสมบัติ
  2. กล่องโต้ตอบจะปรากฏขึ้นให้เลือก 'Java build path' บนเมนูด้านซ้าย
  3. ลบ 'การอ้างอิง Android' และ 'ห้องสมุดส่วนตัว Android' บนแผงด้านขวาจากนั้นคลิกตกลง
  4. ทำความสะอาดโครงการของคุณ (เลือกเมนูโครงการ -> ล้าง)
  5. คลิกขวาที่โครงการของคุณเลือกเครื่องมือ Android -> แก้ไขคุณสมบัติของโครงการ
  6. ทำความสะอาดโครงการอีกครั้ง
  7. รีสตาร์ทคอมพิวเตอร์ของคุณ
  8. เปิดคราสและส่งออก apk

หวังว่าจะช่วยคุณ


ควรระบุข้อความแสดงข้อผิดพลาดเพิ่มเติม คุณประหยัดเวลาของฉัน ขอบคุณ
teapeng

7

ในกรณีของฉันมีปัญหากับโครงการ OpenFeint API ฉันได้เพิ่ม OpenFeint เป็นโครงการห้องสมุด:

โครงการห้องสมุด]! [1]! [ใส่คำอธิบายภาพที่นี่.

มันยังถูกเพิ่มเข้าไปในเส้นทางการสร้างเครื่องมือ ADT 16 ให้ข้อผิดพลาดกับฉากนี้

คลิกขวาที่โครงการของคุณและคลิกที่เส้นทางสร้างกำหนดค่าเส้นทางที่สร้างแล้วดูภาพและลบโครงการของคุณ OpenFeint จากที่นี่และทั้งหมดจะทำ :)

ป้อนคำอธิบายภาพที่นี่


7

ฉันพบอย่างอื่น Android ใช้/libsไดเรกทอรีสำหรับไฟล์ JAR ฉันเคยเห็นข้อผิดพลาด "รูปแบบการแปลงเป็น Dalvik ล้มเหลวด้วยข้อผิดพลาด 1" หลายครั้งเสมอเมื่อฉันทำผิดพลาดในไฟล์ JAR ของฉัน

ตอนนี้ฉันอัพเกรด Roboguice เป็นเวอร์ชั่นใหม่โดยใส่ไฟล์ JAR ใหม่ใน/libsไดเรกทอรีและเปลี่ยนคลาสพา ธ เป็นเวอร์ชันใหม่ ที่ทำให้เกิดข้อผิดพลาด Dalvik

เมื่อฉันลบไฟล์ Roboguice JAR หนึ่งไฟล์จาก/libsโฟลเดอร์ข้อผิดพลาดจะหายไป เห็นได้ชัดว่า Android เลือกไฟล์ JAR ทั้งหมด/libsไม่ว่าไฟล์ใดที่คุณระบุในเส้นทางการสร้าง Java ฉันจำไม่ได้แน่นอน แต่ฉันคิดว่า Android เริ่มใช้/libsโดยเริ่มต้นด้วยAndroid 4.0 (Ice Cream Sandwich, ICS)


7

การอัปเดต Proguard เป็นเวอร์ชันล่าสุดแก้ไขได้สำหรับฉัน

  • เส้นทางพิทักษ์ของฉันคือ C:\Program Files (x86)\Android\android-sdk\tools\proguard\
  • ฉันดาวน์โหลดเวอร์ชันใหม่จากที่นี่
  • และแทนที่ทั้ง bin และโฟลเดอร์ lib

ขอบคุณพระเจ้า!


7

โดยทั่วไปดูเหมือนว่าปัญหานี้เกิดขึ้นเมื่อมีไฟล์ JAR ที่ไม่จำเป็นในการสร้างเส้นทาง

ฉันต้องเผชิญกับปัญหานี้ขณะที่ทำงานในIntelliJ IDEA สำหรับฉันมันเกิดขึ้นเพราะฉันเพิ่มห้องสมุดJUnitและMockitoซึ่งถูกคอมไพล์ตอนรันไทม์ สิ่งนี้จำเป็นต้องตั้งค่าเป็น "การทดสอบ" ในคุณสมบัติโมดูล


โอ้ขอบคุณที่พูดถึง "โดยทั่วไปแล้วดูเหมือนว่าปัญหานี้เกิดขึ้นเมื่อมีไหที่ไม่จำเป็นในการสร้างเส้นทาง" หลังจากลบข้อผิดพลาดไฟล์ jar ที่ไม่จำเป็นออกไปแล้ว :)
surendran

6

วิธีแก้ปัญหาที่เสนอก่อนหน้านี้ไม่เหมาะกับฉัน ในกรณีของฉันปัญหาเกิดขึ้นเมื่อฉันเปลี่ยนจากการอ้างอิงโฟลเดอร์ซอร์สโค้ดไลบรารีเป็นการใช้ไฟล์ JAR ของไลบรารี เริ่มแรกมีโครงการห้องสมุด Android ที่ระบุไว้ในส่วนโครงการแอปพลิเคชัน Android คุณสมบัติ \ Android หน้า \ Library และห้องสมุดยังเปรียบเทียบในแผนผังโครงการ explorer เป็นลิงก์ไปยังไดเรกทอรีแหล่งไลบรารี

ในตอนแรกฉันเพิ่งลบลิงก์ไดเรกทอรีจากแผนผังโครงการและฉันเพิ่มห้องสมุด JAR ไปยังเส้นทางการสร้าง แต่สิ่งนี้ทำให้เกิดข้อยกเว้น

โพรซีเดอร์ที่ถูกต้องคือ (หลังจากเปลี่ยนพา ธ บิลด์และย้อนกลับการอ้างอิงไปยังซอร์สไลบรารี):

  • ลบลิงก์ไดเรกทอรีแหล่งไลบรารีอย่างถูกต้องโดยลบการอ้างอิงจริงออกจากหน้าแอปพลิเคชันโครงการ Properties \ Android

  • การเพิ่มไลบรารี JAR ให้กับพา ธ การสร้างโปรเจ็กต์แอ็พพลิเคชันตามปกติ


6

วิธีการแก้ปัญหาที่ระบุไว้ไม่ทำงานสำหรับฉัน

ที่นี่ฉันมีปัญหา:

ฉันเพิ่มไฟล์ JSoup ภายนอก JAR ลงในพา ธ โปรเจ็กต์ของฉันโดยวางไว้ในโฟลเดอร์ซอร์สที่ชื่อ "libs" จากนั้นคลิกขวาที่Build Path -> เพิ่มเพื่อสร้างพา ธ นี่ทำให้เกิดข้อผิดพลาดในการแปลง Dalvik มันบอกว่าฉันมี "รวมแล้ว" คลาสจากไฟล์ JAR นั้น ฉันมองไปรอบ ๆ ไดเรกทอรีของโครงการและพบว่าสถานที่ที่มัน "รวมอยู่แล้ว" ในความเป็นจริงbinไดเรกทอรี ฉันลบไฟล์ JAR ออกจากbinไดเรกทอรีและรีเฟรชโครงการใน Eclipse และข้อผิดพลาดหายไป!


5

การแก้ปัญหาทั้งหมดข้างต้นไม่ได้ผลสำหรับฉัน ฉันไม่ได้ใช้ .jar precompiled ใด ๆ ฉันใช้ข้อผิดพลาด LVL และ Dalvik ซึ่งทั้งหมดเกี่ยวข้องกับห้องสมุดการออกใบอนุญาตการตลาด

ปัญหาได้รับการแก้ไขโดยการลบโครงการหลักและนำเข้าใหม่ (สร้างโครงการใหม่จากแหล่งที่มีอยู่)


5

ฉันมีปัญหาเดียวกันและไม่มีวิธีแก้ปัญหาใดทำงานได้ ในที่สุดฉันเห็นในคอนโซลว่าข้อผิดพลาดเกิดจากการเรียนซ้ำ (หนึ่งในโครงการที่มีอยู่หนึ่งในไฟล์ jar เพิ่ม):

java.lang.IllegalArgumentException: already added: package/MyClassclass;
[2011-01-19 14:54:05 - ...]: Dx1 error; aborting
[2011-01-19 14:54:05 - ...] Conversion to Dalvik format failed with error 1

ดังนั้นตรวจสอบว่าคุณกำลังเพิ่ม jar ด้วยคลาสที่ซ้ำกันในโครงการของคุณหรือไม่ ถ้าใช่ลองลบหนึ่งในนั้น

มันใช้งานได้สำหรับฉัน


ดูคำตอบของฉัน: stackoverflow.com/questions/2680827/…
Michel

5

บ่อยครั้งที่ฉันการทำความสะอาดโครงการไม่สามารถแก้ไขปัญหานี้ได้

แต่การปิดโปรเจ็กต์ใน Eclipse และจากนั้นเปิดอีกครั้งดูเหมือนจะแก้ไขได้ในกรณีเหล่านั้น ...


1
เหมือนกันสำหรับฉันการปิด Eclipse และการเริ่มต้นใหม่มักจะแก้ปัญหาได้ จากนั้นฉันลองแล้ว แต่ฉันไม่สามารถทำการเอ็กซ์ปอร์ตครั้งที่สองได้ฉันต้องรีสตาร์ทอีกครั้ง
เท็ด

5

ฉันพบปัญหานี้ แต่วิธีแก้ไขของฉันมีสองเท่า 1. ) ฉันมีการเพิ่มรุ่น Android เป้าหมายภายใต้โครงการ -> คุณสมบัติ -> Android 2. ) ฉันไม่มี google 'ส่วนเสริมบุคคลที่สาม' ทั้งหมด คลิกที่ในการจัดการ AVD SDK ภายใต้แพคเกจใช้ได้ -> บุคคลที่สาม add-on -> Google Inc ฉันดาวน์โหลด SDK ทั้งหมดและแก้ไขปัญหาของฉัน


โซลูชันของฉันก็เหมือนกับโซลูชั่นของ @THE_DOM คลิกขวาที่โครงการเลือกเครื่องมือ Android จากนั้นเลือกเพิ่มห้องสมุดที่เข้ากันได้ วิธีนี้จะดาวน์โหลด "ส่วนเสริมของบุคคลที่สาม" หากคุณไม่มี (โซลูชันของ THE_DOM) แต่จะเพิ่มเข้าไปในโครงการของคุณด้วย ไม่ว่าจะเป็นวิธีการแก้ปัญหานี้เป็นเพียงยาหลอกหรือยังไม่ได้เห็น :)
คริส

5

ฉันใช้ Android 1.6 และมีไฟล์ JAR ภายนอกหนึ่งไฟล์ สิ่งที่ใช้ได้ผลสำหรับฉันคือการลบไลบรารีทั้งหมดคลิกขวาที่โครงการและเลือกเครื่องมือ Android -> * แก้ไขคุณสมบัติโครงการ (ซึ่งเพิ่มกลับ Android 1.6) แล้วเพิ่มไฟล์ JAR ภายนอกกลับ


5

ฉันพบปัญหานี้เนื่องจากปลั๊กอินของ Android-Maven ใน Eclipse ดูเหมือนจะไม่รู้จักการอ้างอิงสกรรมกริยาและการอ้างอิงที่อ้างอิงสองครั้งจากโครงการสองโครงการ (รวมถึงโครงการห้องสมุด Android) และรวมพวกเขามากกว่าหนึ่งครั้ง ฉันต้องใช้ hocus-pocus เพื่อให้ได้ทุกอย่างที่รวมไว้เพียงครั้งเดียวแม้ว่า Maven จะดูแลทั้งหมดนี้

ตัวอย่างเช่นฉันมี corement globalmentor-core ซึ่งถูกใช้โดย globalmentor-google และ globalmentor-android (หลังซึ่งเป็นไลบรารี Android) ใน globalmentor-android pom.xmlฉันต้องทำเครื่องหมายการพึ่งพาว่า "จัดเตรียม" รวมถึงแยกออกจากห้องสมุดอื่น ๆ

    <dependency>
        <groupId>com.globalmentor</groupId>
        <artifactId>globalmentor-core</artifactId>
        <version>1.0-SNAPSHOT</version>
        <!-- android-maven-plugin can't seem to automatically keep this from being
             included twice; it must therefore be included manually (either explicitly
             or transitively) in dependent projects -->
        <scope>provided</scope>
    </dependency>

จากนั้นในแอปพลิเคชั่นสุดท้ายpom.xmlฉันต้องใช้เล่ห์เหลี่ยมที่เหมาะสมเพื่ออนุญาตเส้นทางการรวมเพียงหนึ่งเส้นทาง --- รวมถึงไม่รวมถึงไลบรารีหลักอย่างชัดเจน:

    <!-- android-maven-plugin can't seem to automatically keep this from being
        included twice -->
    <!-- <dependency> -->
    <!-- <groupId>com.globalmentor</groupId> -->
    <!-- <artifactId>globalmentor-core</artifactId> -->
    <!-- <version>1.0-SNAPSHOT</version> -->
    <!-- </dependency> -->

    <dependency>
        <groupId>com.globalmentor</groupId>
        <artifactId>globalmentor-google</artifactId>
        <version>1.0-SNAPSHOT</version>
        <exclusions>
            <!-- android-maven-plugin can't seem to automatically keep this from
                being included twice -->
            <exclusion>
                <groupId>com.globalmentor</groupId>
                <artifactId>globalmentor-core</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>com.globalmentor</groupId>
        <artifactId>globalmentor-android</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>

สิ่งที่แปลกสำหรับผมก็คือว่า<extractDuplicates>true</extractDuplicates>ในหุ่นยนต์ Maven ปลั๊กอินแก้ไขปัญหาสำหรับmvn installแต่ไม่ใช่สำหรับmvn deployที่ฉันมีข้อผิดพลาดอธิบาย ... แปลกจริงๆ
Karussell

5

ในกรณีของฉัน

โปรเจ็กต์ -> คุณสมบัติ -> เส้นทางการสร้าง Java -> ในแท็บคำสั่งซื้อและส่งออก -> ยกเลิกการเลือก android-support-v4.jar


5

เพียงทำความสะอาดโครงการ

หากวิธีนี้ใช้ไม่ได้ให้ลองวิธีแก้ไขปัญหาอื่น


บวก 1 สำหรับวิธีแก้ปัญหาง่ายๆ
Shylendra Madda

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