Driver JDBC4 menyertakan file:
META-INF/services/java.sql.Driver
dalam toples yang menggunakan mekanisme ServiceProvider untuk mendaftarkan implementasi Driver dengan JVM (lihat javadocs untuk java.util.ServiceLoader
). Itu sebabnya Class.forName
tidak lagi diperlukan.
Dugaan saya adalah ini adalah masalah pemuat kelas. ServiceLoader
javadoc menyebutkan bahwa:
Saya akan mencoba meletakkan driver Anda di tomcat\lib
direktori daripada direktori aplikasi web Anda untuk melihat apakah itu membuat perbedaan (pemuat kelas yang berbeda?).
Jika Anda meluncurkan aplikasi web melalui sebuah ide dan menyetel breakpoint, setelah Anda mencapai breakpoint, Anda dapat menggunakan fitur "evaluate expression" untuk mengeksekusi:ServiceLoader.load(Driver.class)
. Ini akan memberi Anda ServiceLoader
kelas yang dapat Anda intip untuk melihat Driver mana yang terdaftar. Anda dapat memeriksa apakah driver mysql ada di sana, di mana dalam daftar itu, dll, yang mungkin membantu dalam mencari tahu perilaku di sini.