11
votes

Tomcat 8 - java.sql.sqxception: impossible de créer un pilote de classe JDBC de classe '' pour connecter URL 'JDBC: mysql: // xxx / myapp'

J'ai regardé partout sur le Web afin de trouver une solution à mon problème, mais je n'avais pas de chance! : (

J'essaie de développer un servlet capable de se connecter à une base de données MySQL (pool de connexion) et de le déployer sur un serveur Tomcat 8. P>

J'ai un fichier context.xml dans meta -Inf comme ceci: p> xxx pré>

dans web-inf fois j'ai créé le fichier web.xml: p> xxx pré>

enfin, sur la classe de servlet, j'utilise: p> xxx pré>

mais sur cette ligne, lorsque j'essaie d'obtenir une connexion de la source de données, je reçois l'exception suivante: P>

java.sql.SQLException: Cannot create JDBC driver of class '' for connect URL 'jdbc:mysql://xxx/myApp'
t org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:2065)
    at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:1939)
    at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1412)
    at DBPoolConnectionServlet.processRequest(DBPoolConnectionServlet.java:73)
...
Caused by: java.sql.SQLException: No suitable driver


2 commentaires

Vous avez dit que vous avez placé le pilote JDBC dans le dossier Tomcat Lib, était-ce que le fichier JDBC .jar?


Oui, désolé, j'ai raté l'extension lors du processus de copie et de pâte, c'est un fichier JAR.


3 Réponses :


4
votes

On dirait que tu fais tout va bien, alors:

DriverClassName = "com.mysql.jdbc.Driver" (les capitales peuvent avoir une importance).

Vous placez le mysql-connecteur-java-5.1.34-bin.jar (il doit avoir une extension JAR à détecter dans tomcat / lib (ne le mettez pas sur votre chemin WebApp, il doit être chargé par Tomcat Class Charger) .

S'il ne vous aide pas et que vous commencez votre webApp de l'IDE. Essayez de démarrer la console de formulaire Tomcat et déployez votre application manuellement. Si vous avez plus d'un tomcat installé, assurez-vous que Catalina_Home est réglé sur celui que vous placez votre pot mysql.


4 commentaires

J'ai essayé le déploiement manuel mais le résultat est le même. Dans tous les cas, aller plus loin dans la stacktrace, j'ai remarqué l'erreur suivante: causé par: java.sql.sqxception: pas de pilote approprié


Guy, merci beaucoup !!! Vous avez certainement résolu mon problème !!! : D Après avoir regardé autour de vous pour le pas de pilote approprié Exception, j'ai trouvé cette question: Stackoverflow.com/questions/5556664/... et en particulier Cette réponse: Stackoverflow.com/a/19259608/1133284 pour une raison quelconque, j'ai besoin d'appeler classe.forname ( "com.mysql.jdbc.driver"); , même si je ne devrais pas !!! :)


Devez-vous appeler la classe.forname à chaque fois que vous avez besoin d'une connexion?


@RTF Non, je pense que vous avez juste besoin de besoin une fois, avant toute connexion!



1
votes

Le problème possible pourrait être Tomcat rencontre plusieurs fois le pilote JAR pendant la classement. Le pilote JAR doit seulement être sous le répertoire de Tomcat lib et non sous Web-Inf / Lib de votre application Web. Avoir le pot de conducteur à ces deux emplacements a abouti à des problèmes de chargement étrange de classe pour moi, qui se manifeste sous forme d'erreurs suggérant "pilote JDBC avec une classe vide et une URL NULL n'a pas pu être créée" . Voir cette réponse pour un problème similaire dans une base de données différente: https://stackoverflow.com/a/11604084/2200690 << / p>

Mise à jour : je ne commence plus Tomcat à partir de l'éclipse pour vous assurer que les paramètres Eclipse et Tomcat ne se mélangent pas (plutôt que je viens de commencer tomcat à partir du répertoire des bacs et de la télécommande Débogou de la JVM de Eclipse) .Once j'ai fait ce changement, je pourrais avoir le pavillon du pilote dans le Web-Inf / Lib et Tomcat Lib, et cela n'a pas d'importance.


0 commentaires

2
votes

Étapes pour réparer les problèmes de connexion NetBeans / MySQL et résoudre l'application déployée par défaillance sur le chemin de contexte /ra7web-1.0-snapshot, mais le contexte n'a pas pu démarrer:

  1. Edit Server.xml sur votre serveur Tomée à l'aide d'un nom de chemin complet pour AppBase: XXX

  2. Ajoutez les éléments suivants à votre projet Web-XML: XXX

  3. ajoutez les éléments suivants à votre contexte.xml: XXX

  4. Les ressources suivantes.xml ont été générées, mais je devais éditer plusieurs back-slashes de sorte que cela correspond à mon URL: XXX


0 commentaires