JDBC4-stuurprogramma's bevatten een bestand:
META-INF/services/java.sql.Driver
in de jar die het ServiceProvider-mechanisme gebruikt om de Driver-implementatie te registreren bij de JVM (zie javadocs voor java.util.ServiceLoader
). Daarom Class.forName
is niet langer nodig.
Ik vermoed dat dit een probleem is met de klassenlader. De ServiceLoader
javadoc vermeldt dat:
Ik zou proberen je stuurprogramma in de tomcat\lib
. te zetten directory in plaats van uw webapp-directory om te zien of dat een verschil maakt (andere class loader?).
Als u uw web-app start via een ide en een breekpunt instelt, kunt u, zodra u het breekpunt bereikt, de functie "uitdrukking evalueren" gebruiken om het volgende uit te voeren:ServiceLoader.load(Driver.class)
. Dit geeft je een ServiceLoader
klasse waarin u kunt kijken om te zien welke stuurprogramma's zijn geregistreerd. U kunt controleren of het mysql-stuurprogramma daar is, waar het zich in de lijst bevindt, enz., wat kan helpen bij het achterhalen van het gedrag hier.