3 votes

SQLException : Aucun pilote approprié n'a été trouvé

C'est l'un des sujets les plus abordés, mais aucun autre sur stackoverflow ne correspond.

Mon environnement est un Tomcat 7 avec une JNDI-DataSource définie dans context.xml. Lorsque je démarre mon Tomcat, l'exception suivante est levée

org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class 'org.apache.derby.jdbc.ClientDataSource' for connect URL 'jdbc:derby://localhost:1527/app;create=true'
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1452)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
at org.hibernate.service.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:141)
at org.hibernate.tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.prepare(SuppliedConnectionProviderConnectionHelper.java:51)
at org.hibernate.tool.hbm2ddl.DatabaseExporter.<init>(DatabaseExporter.java:52)
at org.hibernate.tool.hbm2ddl.SchemaExport.execute(SchemaExport.java:367)
at org.hibernate.tool.hbm2ddl.SchemaExport.create(SchemaExport.java:304)
at org.hibernate.tool.hbm2ddl.SchemaExport.create(SchemaExport.java:293)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:498)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1743)
at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:94)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:905)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:890)
at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:57)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:63)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
at com.opensolutions.openflow.persistence.DefaultEntityManagerStore.<init>(DefaultEntityManagerStore.java:20)
at com.opensolutions.openflow.servlet.ApplicationWebserviceServlet.initApplication(ApplicationWebserviceServlet.java:38)
at com.opensolutions.openflow.servlet.ApplicationWebserviceServlet.loadBus(ApplicationWebserviceServlet.java:27)
at org.apache.cxf.transport.servlet.CXFNonSpringServlet.init(CXFNonSpringServlet.java:71)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1280)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1193)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1088)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5033)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5317)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:977)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1655)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)

Caused by: java.sql.SQLException: No suitable driver
at java.sql.DriverManager.getDriver(DriverManager.java:289)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1437)
... 37 more

Des solutions ? Je ne sais pas. J'ai tellement essayé, mais rien ne fonctionne.

1voto

Lyuben Todorov Points 7885

Cette ligne dans la trace de la pile est la clé pour résoudre le problème :

Caused by: java.sql.SQLException: No suitable driver

Puisque l'exception est déclenchée à org.apache.tomcat... Il semble que vous n'ayez pas placé votre pilote de base de données dans le répertoire de tomcat. lib (c'est-à-dire qu'il vous manque des dépendances). Ce dossier stocke les dépendances externes qui sont nécessaires à vos applications et se trouve dans apache-tomcat-version/lib/ . Vous devez fournir le pilote à la fois à votre application web et au serveur Tomcat.

Jetez également un coup d'œil à ces questions connexes :

  1. JDBC/MSQL : Aucun pilote approprié n'a été trouvé
  2. Cause de l'impossibilité de trouver un pilote approprié
  3. java.sql.SQLException : Aucun pilote approprié n'a été trouvé

EDIT

Le problème est peut-être que la webapp n'a pas de accès à la bibliothèque Essayez d'ajouter la bibliothèque dans tomcat-dossier personnel/common/lib . J'ai essayé ceci et tomcat7 n'avait pas de dossier commun, donc j'ai placé la bibliothèque dans webapp/WEB-INF/lib.

0voto

vikingsteve Points 6357

J'avais une url jdbc incorrecte comme ceci :

Faux !

jdbc:jtds://myserver:port;databaseName=abc

Correct :

jdbc://myserver:port;databaseName=abc

(a retiré le jtds: partie...)

0voto

Zen Points 1

Avez-vous défini le chemin du pilote jdbc ? Lorsque vous utilisez la base de données Oracle, vous devez définir le chemin du fichier jar (pilote jdbc) dans "CLASSPATH".

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