Sterowniki JDBC4 zawierają plik:
META-INF/services/java.sql.Driver
w słoiku, który używa mechanizmu ServiceProvider do zarejestrowania implementacji sterownika w JVM (zobacz javadocs dla java.util.ServiceLoader
). Dlatego Class.forName
nie jest już potrzebne.
Domyślam się, że jest to problem z ładowaczem klas. ServiceLoader
javadoc wspomina, że:
Spróbowałbym umieścić twój sterownik w tomcat\lib
zamiast katalogu aplikacji internetowej, aby sprawdzić, czy to robi różnicę (inny program ładujący klasy?).
Jeśli uruchomisz swoją aplikację internetową za pomocą ide i ustawisz punkt przerwania, po osiągnięciu punktu przerwania możesz użyć funkcji „oceny wyrażenia”, aby wykonać:ServiceLoader.load(Driver.class)
. To da ci ServiceLoader
klasy, do której możesz zajrzeć, aby zobaczyć, którzy kierowcy są zarejestrowani. Możesz sprawdzić, czy sterownik mysql jest tam, gdzie jest na liście itp., co może pomóc w ustaleniu zachowania tutaj.