Pertanyaan ini berumur 6 tahun dan Mark benar bahwa, di hampir setiap skenario yang dapat Anda pikirkan, JDBC di Android sama masuk akalnya dengan mencoba menggunakan pemanggang roti di bak mandi. Namun, terkadang kami melakukan sesuatu karena kami bisa dan bukan karena kami harus melakukannya, dan hari ini saya memiliki alasan yang dapat dibenarkan untuk ingin melakukan ini (untuk aplikasi khusus yang berjalan di lingkungan yang tidak biasa), begitulah cara saya menemukan pertanyaan ini.
Mengatasi NoClassDefFoundError pertama, alasannya tidak tertangkap oleh catch blokir karena ini adalah Error bukan Exception . Keduanya Error dan Exception mewarisi dari Throwable , jadi Anda bisa menangkapnya sebagai gantinya:
catch (Throwable t)
{
// This will catch NoClassDefFoundError
}
Saya yakin itu bukan MySqlDataSource yang tidak dapat ditemukannya, tetapi salah satu kelas atau antarmuka tempat ia bergantung - dalam kasus saya adalah javax.naming.Referenceable . Android tidak menyediakan javax.naming paket jadi mencoba menggunakan fitur penyatuan driver Connector/J JDBC untuk MySQL tidak akan membuat Anda terlalu jauh (Anda dapat mencoba menyediakan dependensi yang hilang tetapi jalan itu kemungkinan mengarah pada kegilaan).
Alih-alih, Anda mungkin akan lebih beruntung dengan implementasi kumpulan koneksi pihak ketiga. Ada berbagai perpustakaan Java untuk melakukan ini. Beberapa dari mereka akan bekerja di Android. Salah satu yang saya verifikasi berfungsi adalah HikariCP . Ada petunjuk untuk mengonfigurasinya di sini dan, khusus untuk MySQL, di sini .