Saya mengalami masalah saat mencoba menjalankan aplikasi Android yang, hingga menambahkan perpustakaan eksternal kedua ke jalur pembuatannya, berfungsi dengan baik. Sejak menambahkan toples scoreninja, saya sekarang mendapatkan NoClassDefFoundError ketika saya mencoba menjalankan aplikasi.
Inilah pesannya:
02-11 21:45:26.154: ERROR/AndroidRuntime(3654): java.lang.NoClassDefFoundError: com.scoreninja.adapter.ScoreNinjaAdapter
Karena semua skrip build dihasilkan oleh perangkat Android (?), Saya tidak yakin apa lagi yang bisa saya lakukan selain membersihkan dan membangun kembali atau memulai kembali gerhana (Saya sudah mencoba ketiganya). Adakah yang tahu bagaimana saya bisa mengubah ini?
Jawaban:
Saya punya masalah ini setelah memperbarui ADT.
Saya menyimpan semua file JAR saya di folder bernama "lib" dan menambahkan toples ke jalur build dengan cara Eclipse yang normal. Ini berfungsi dengan baik sampai pembaruan saya.
Setelah pembaruan saya, saya mendapatkan NoClassDefFoundError untuk kelas yang bisa saya lihat dengan jelas dimasukkan ke dalam toples (memeriksa kelas ReferencedLibraries).
Solusinya adalah menghapus toples saya dari path build dan mengganti nama folder "lib" saya menjadi "libs". Ini adalah konvensi semut, dan tampaknya menjadi cara ADT baru menemukan dan memasukkan pustaka dalam file .apk. Setelah saya melakukan ini, semuanya bekerja dengan baik.
sumber
Saya tidak harus meletakkan jar-library di aset atau lib (s), tetapi hanya mencentang kotak untuk jar ini di Properties -> Java Build Path -> "Order and Export" (sudah terdaftar sebelumnya, tetapi tidak dipilih )
sumber
Dengan menambahkan jar eksternal ke jalur build Anda, tambahkan saja jar ke paket Anda, tetapi itu tidak akan tersedia selama runtime.
Agar toples tersedia saat runtime , Anda perlu:
assets
foldersumber
import
pernyataan untuk file jar eksternal? Saya belum pernah menggunakannya.assests
pendekatan folder?Saya punya ini untuk MapActivity. Builds in Eclipse mendapat NoClassDefFound di debugger.
Lupa menambahkan perpustakaan ke manifes,
<Application>...</Application>
elemen di dalamsumber
Saya telah mengubah urutan proyek yang disertakan (Eclipse / Configure Build Path / Order dan Ekspor). Saya telah memindahkan dua proyek dependen saya ke atas daftar "Pesanan dan Ekspor". Itu memecahkan masalah "NoClassDefFoundError".
Ini aneh bagi saya. Saya tidak mendengar tentang pentingnya urutan perpustakaan dan proyek yang disertakan. Android + Eclipse menyenangkan :)
sumber
Saya tidak yakin apakah ini terkait, atau apakah Anda bahkan masih mencari jawaban, tetapi saya menemukan utas ini ketika mencoba untuk meneliti kesalahan yang sama (tetapi mungkin karena alasan yang berbeda).
Saya tidak dapat menemukan solusi online, tetapi jawaban pada utas yang sama membuat saya berpikir dan menyadari bahwa saya mungkin hanya perlu membangun kembali (atau membersihkan) proyek.
Di Eclipse, pergi ke Project => Clean. Pilih proyek Anda dan Eclipse sepertinya memperbaikinya sendiri. Bagi saya ini menyelesaikan masalah.
Semoga ini membantu.
sumber
Application
kelas yang mengarah ke kesalahan yang berbeda.Saya mengalami masalah yang sama. Alasannya adalah bahwa perpustakaan yang saya coba gunakan telah dikompilasi dengan standar JDK 7.
Saya mengkompilasi ulang dengan
-source 1.6 -target 1.6
opsi dan bekerja dengan baik.sumber
Hal yang sama berlaku untuk saya: Properti -> Java Build Path -> "Order and Export" Menariknya - mengapa ini tidak dilakukan secara otomatis? Saya kira beberapa pengaturan tidak ada. Ini juga terjadi pada saya setelah upgrade SDK.
sumber
Klik kanan folder proyek Anda, cari Properties in Java build path dan pilih file jar yang Anda lihat. Ini berhasil untuk ku.
sumber
John O'Connor benar dengan masalah ini. Masalahnya tetap dengan menginstal ADT 17 ke atas. Temukan tautan ini untuk memperbaiki kesalahan:
http://android.foxykeep.com/dev/how-to-fix-the-classdefnotfounderror-with-adt-17
sumber
Saya mencoba semuanya dari posting ini (dan beberapa posting lainnya), dan itu tidak berhasil bagi saya, sejauh ini merupakan upgrade ADT yang paling mengerikan yang pernah saya alami, dan saya tidak akan pernah meningkatkan tanpa ADT backup yang berfungsi.
Saya berhasil menyelesaikannya dengan menghapus proyek, dan kemudian menambahkannya lagi menggunakan sumber cadangan yang saya miliki.
sumber
Saya memiliki kesalahan yang sama dengan ADT22. Mengatasinya dengan memeriksa "Perpustakaan Pribadi Android" di properti -> Java build path -> Order and export. Jika Anda menggunakan proyek perpustakaan apa pun, hal yang sama harus dilakukan untuk mereka juga.
sumber
Semua jawaban yang ada tidak berfungsi untuk saya karena kasus saya sedikit berbeda. Saya butuh beberapa jam untuk membuatnya bekerja. Saya menggunakan Eclipse.
Proyek android saya mencakup proyek java 1.6 normal lainnya, yang membutuhkan file jar pihak ke-3. Caranya adalah:
Semoga ini bisa membantu mereka yang memiliki skenario serupa seperti saya.
sumber
kadang-kadang Anda harus mengambil seluruh proyek eksternal sebagai perpustakaan dan bukan hanya toples:
masalah saya diselesaikan dengan menambahkan seluruh proyek (dalam kasus saya google-play-services_lib) sebagai perpustakaan dan bukan hanya toples. langkah-langkahnya (dari @style answer ):
sumber
Kadang-kadang itu akan terjadi karena tidak termasuk jar, yang Anda miliki ketergantungannya, dengan tag "uses-libary" di AndroidManifest.xml Anda.
Juga, pastikan itu berada di dalam tag "aplikasi".
Salam,
Ravi
sumber
Saya punya masalah ini dan itu disebabkan oleh tidak "mengekspor" perpustakaan. Masalahnya hanya karena file .class untuk beberapa kelas tidak tersedia saat mengemas APK. Waktu kompilasi itu akan berfungsi dengan baik tanpa mengeluarkan exporiting
Dalam kasus saya, saya menggunakan kelas "CusrsorAdapter" dan di bawah "JavaBuildPath-> Order and Export" Saya tidak memeriksa tabung dukungan V4. Setelah itu masalah yang dipilih hilang.
Untuk memastikan Anda mendapatkan kesalahan noClassDefFound karena alasan di atas, silakan periksa logacat Anda, Anda akan melihat kesalahan kelas super yang tidak dikenal saat dijalankan.
sumber
Sebenarnya Anda telah mencapai masalah batas 64k yang terkenal, Anda harus mengaktifkan multidex.
Ini adalah bagaimana Anda melakukannya. https://developer.android.com/tools/building/multidex.html
sumber
Saya mencoba berbagai hal dan alasan kesalahan dalam kasus saya adalah konflik antara maps.jar dan Google Api di Java Build Path-> Libraries. Jadi, ketika saya menghapus maps.jar itu berfungsi dengan baik.
Salam,
wahib
sumber
pastikan file jar Anda ada di direktori libs proyek Anda karena Anda menggunakan versi ADT yang lebih baru dengan gerhana Anda.
sumber
Saya mendapatkan masalah yang sama persis ... Untuk memperbaikinya, saya baru saja menghapus Android Private Libs saya di "build path" dan mengklik ok ... dan ketika saya membuka op "build path" lagi gerhana telah menambahkannya dengan sendirinya lagi, dan kemudian itu bekerja untuk saya;) ...
sumber
saya menghabiskan dua hari untuk mencoba menyelesaikan masalah ini setelah memperbarui ADT. akhirnya saya beruntung mendapatkan posting ini di sini:
https://code.google.com/p/android/issues/detail?id=55304
yang membawa saya ke arah yang benar. ketika Anda mengikuti solusinya - ingatlah untuk mengganti pustaka dukungan android dari semua proyek Anda ke versi yang sama (hapus dan instal ulang ke proyek). Saya harap ini membantu - semoga berhasil
sumber
Jika Anda lebih suka mengetahui file mana yang terkait dengan solusi inilah yang saya temukan. Ubah file .classpath menjadi
Ganti file .classpath di semua proyek perpustakaan dan di proyek android utama. File .classpath ada di folder root dari proyek gerhana. Karena jangan lupa untuk menambahkan entri classpath Anda sendiri, jika Anda punya (jadi bandingkan dengan versi .classpath Anda saat ini).
Saya percaya ini adalah hasil yang sama dengan pergi melalui menu gerhana sebagai komponen-pengguna dijelaskan di atas (Eclipse / Configure Build Path / Order and Export).
sumber
Solusi di sini berhasil untuk saya. Ini masalah mengimpor perpustakaan ke folder libs, lalu memodifikasi file build.gradle dan kemudian membersihkan dengan gradlew.
sumber
Jika Anda mengubah pesanan dan mengekspor di jalur pembangunan proyek Anda, kesalahan ini tidak akan terjadi. Cara lain untuk mencapainya adalah melalui .classpath di folder proyek Anda.
sumber
Coba ini:-
Langkah 1
Tambahkan semua perpustakaan untuk membangun pat di Eclipse (artinya buat semua perpustakaan perpustakaan yang direferensikan)
Langkah 2
Hapus file R.java dan kembali buat proyek. Jangan khawatir, R.java secara otomatis akan diciptakan kembali.
Dingin :)
sumber
Seperti yang saya mengerti, Proyek Anda tidak menunjukkan kesalahan, karena Anda memasukkan Jar. Tetapi Jar tidak akan digunakan, ketika Proyek Anda "diekspor" ke perangkat. Coba ini
Proyek -> Properti
Java Build Path / Order dan Ekspor
[✔] Jar Anda
sumber
Ini sangat sering terjadi pada saya.
Terakhir kali yang terjadi yang saya ingat adalah karena beralihnya Eclipse ADT (Google edisi khusus) ke Android Studio, dan beralih kembali. Saya pada dasarnya mencoba semua metode yang dapat saya temukan di stackoverflow yang tidak berfungsi untuk saya.
Akhirnya, saya membuat aplikasi berfungsi kembali (tidak ada lagi NoCalssDeffoundError) dengan mengganti IDE saya ke Eclipse asli (Kepler) dengan ADT.
sumber