เมื่อเร็วๆ นี้ ฉันพบปัญหา บางครั้งฉันเพิ่ม jar และลบ jar ซ้ำๆ ลงในโปรเจ็กต์ Android และพบว่าการคอมไพล์สามารถผ่านได้ แต่เมื่อนำไปใช้กับอ็อบเจ็กต์ของ jar ภายนอก ข้อยกเว้น java.lang.NoClassDefFoundError จะถูกส่งออกไป ระหว่างดำเนินการ ทำให้โปรแกรมล่ม
ตรวจสอบคุณสมบัติของโปรเจ็กต์และพบว่ารายการ Android Dependencies ในพาธ Java build น้อยกว่าโปรเจ็กต์ปกติ:
เมื่อเปรียบเทียบกับโปรเจ็กต์ก่อนการสูญเสีย เราพบว่าความแตกต่างอยู่ในไฟล์ .classpath ในไดเร็กทอรีรากของโปรเจ็กต์ <classpathentryexported="true" kind="con" path="com.android.ide.eclipse.adt .LIBRARIES"/ >การส่งออกที่นี่กลายเป็นเท็จ ดังนั้นฉันจึงเปลี่ยนกลับเป็นจริง จากนั้นจึงปิดและเปิดโปรเจ็กต์อีกครั้ง และพบว่าไม่เป็นไร
นอกจากนี้ หากไม่ได้วางแพ็กเกจ jar ไว้ในไดเร็กทอรี /libs ของไดเร็กทอรีโปรเจ็กต์ ปัญหานี้ก็จะเกิดขึ้นเช่นกัน โปรดวางแพ็กเกจ jar ไว้ในไดเร็กทอรี /libs มิฉะนั้น แม้ว่าการคอมไพล์จะสามารถผ่านได้ แต่ jar ก็จะผ่านไปได้ ไม่ได้รับการบรรจุเมื่อบรรจุภัณฑ์เข้าไปจึงทำให้เกิดข้อยกเว้นข้างต้น Eclipse จะจัดทำแพ็กเกจไฟล์ในไดเร็กทอรี /libs โดยอัตโนมัติเมื่อทำการคอมไพล์
ปัญหานี้ไม่เคยปรากฏมาก่อน ฉันไม่รู้ว่าเกี่ยวข้องกับเวอร์ชัน Eclipse และเวอร์ชัน ADT หรือไม่