5 votes

Spring Boot : Impossible de charger la classe du pilote : org.hsqldb.jdbcDriver

J'ai une application Spring Boot simple (générée via Spring Roo).

La base de données est configurée comme suit :

spring.datasource.driver-class-name=org.hsqldb.jdbcDriver
spring.datasource.url=jdbc\:hsqldb\:mem\:PetClinic
spring.jpa.hibernate.naming.strategy=org.hibernate.cfg.ImprovedNamingStrategy
spring.messages.encoding=ISO-8859-1
spring.messages.fallback-to-system-locale=false
spring.thymeleaf.mode=html

Voici comment j'ai déclaré la dépendance HSQLDB :

  org.hsqldb
  hsqldb
  provided

Lorsque je lance l'application, j'obtiens l'erreur :

Caused by: java.lang.IllegalStateException: Cannot load driver class: org.hsqldb.jdbcDriver
    at org.springframework.util.Assert.state(Assert.java:392) ~[spring-core-4.3.3.RELEASE.jar:4.3.3.RELEASE]
    at org.springframework.boot.autoconfigure.jdbc.DataSourceProperties.determineDriverClassName(DataSourceProperties.java:214) ~[spring-boot-autoconfigure-1.4.1.RELEASE.jar:1.4.1.RELEASE]

Le module Spring-boot-autoconfigure tente de charger la classe avec la classe utilitaire ClassUtils qui charge les classes du contexte actuel.

Je me demande si cette méthode fonctionne correctement puisque j'utilise un conteneur Tomcat qui est chargé de charger les dépendances Maven ? Pourquoi même avec le JAR dans le répertoire libs, Spring n'est-il pas capable de le trouver ?

5voto

Strelok Points 18453
  1. Supprimez fourni de votre fichier pom.xml
  2. Supprimez les propriétés spring.datasource.driver-class-name et spring.datasource.url de votre fichier de propriétés de l'application

Parce que :

  • lorsque spring.datasource.url est fourni le nom de la classe du pilote est redondant car Spring Boot tentera automatiquement de charger le bon pilote.
  • comme vous voulez utiliser une base de données intégrée vous n'avez pas besoin de fournir spring.datasource.url du tout. Vous avez juste besoin d'avoir un fichier JAR de base de données intégré dans le classpath (comme HSQLDB)

Extrait de la documentation pertinente :

Spring Boot peut auto-configurer des bases de données intégrées H2, HSQL et Derby. Vous n'avez pas besoin de fournir d'URL de connexion, il vous suffit d'inclure une dépendance de construction vers la base de données intégrée que vous souhaitez utiliser.

Veuillez lire la section Travailler avec des bases de données SQL de la documentation de Spring Boot. Tout ce que j'ai dit est mentionné là-bas, donc vous pouvez obtenir plus de détails.

4voto

Je vois que la portée que vous avez donnée est fournie, je ne pense pas que Tomcat fournisse le hsqldb.jar avec par défaut.

Essayez donc de supprimer la portée fournied.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X