Il y a une question TRÈS similaire à la mienne, mais dans mon cas, je n'ai aucun fichier dupliqué dans mon chemin de génération, la solution ne fonctionne donc pas pour moi. Je recherche Google depuis quelques heures maintenant, mais aucune des solutions que j'ai trouvées ne résout réellement mon problème. Je crée un site Web avec une connectivité de base de données pour un devoir. J'utilise une base de données MySQL, développée sous Eclipse et exécutée sous Windows.
Je continue à obtenir Java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
avec le code suivant:
import Java.sql.*;
//...
public void someMethodInMyServlet(PrintWriter out)
{
Connection connection = null;
PreparedStatement query = null;
try {
out.println("Create the driver instance.<br>");
Class.forName("com.mysql.jdbc.Driver").newInstance();
out.println("Get the connection.<br>");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "secret");
query = connection.prepareStatement( "SELECT * FROM customers");
//...
} catch (Exception e)
{
out.println(e.toString()+"<br>");
}
}
//...
Lorsque je lance le code ci-dessus, j'obtiens la sortie suivante:
Create the driver instance.
Java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
Cela ne dépasse pas la ligne Class.forName...
et je ne comprends pas pourquoi! Voici ce que j'ai fait:
C:\Program Files\MySQL\mysql-connector-Java-5.1.12\mysql-connector-Java-5.1.12-bin.jar
. mysql-connector-Java-5.1.12-bin.jar
.Chaque fois que j'essaie d'utiliser la servlet, le même message d'erreur s'affiche, que le fichier jar soit présent ou non. Pourriez-vous m'aider à comprendre cela?
En ce qui concerne chaque bibliothèque "tierce partie" à la manière d'un fichier JAR devant être utilisé par l'application Web, copiez/supprimez simplement le fichier JAR physique dans le /WEB-INF/lib
de l'application Web. Il sera alors disponible dans le classpath par défaut de webapp. En outre, Eclipse est suffisamment intelligent pour le remarquer. Pas besoin de s'embarrasser avec buildpath. Cependant, assurez-vous de supprimer toutes les références inutiles que vous avez ajoutées auparavant, sinon cela pourrait entrer en collision.
Une alternative consiste à l'installer sur le serveur lui-même en déposant le fichier JAR physique dans le dossier /lib
du serveur. Cela est nécessaire lorsque vous utilisez une source de données de pool de connexions JDBC fournie par le serveur, qui nécessite à son tour le pilote JDBC MySQL.
Comme vous l'exécutez dans servlet
, le fichier jar doit être accessible par le conteneur servlet . Vous pouvez inclure le connecteur dans votre application war
ou le placer dans la bibliothèque étendue du conteneur de servlet et les éléments de gestion de la source de données, le cas échéant. La deuxième partie dépend totalement du conteneur que vous avez.
Placez le fichier mysql-connector-Java-5.1.6-bin.jar dans le dossier\Apache Tomcat 6.0.18\lib. Votre problème sera résolu.
Les autres ont raison de mettre le fichier JAR du pilote à la disposition de votre conteneur de servlets. Mon commentaire visait à vous suggérer de vérifier à partir de la ligne de commande si le pilote lui-même est intact.
Plutôt qu'une main()
vide, essayez quelque chose comme ceci, adapté de la documentation fournie:
public class LoadDriver {
public static void main(String[] args) throws Exception {
Class.forName("com.mysql.jdbc.Driver");
}
}
Sur ma plate-forme, je ferais ceci:
mysql-connector-Java-5.1.12-bin.jar mysql-connector-Java-5.1.12-bin.jar -connector-Java-5.1.12-bin.jar :. LoadDriver
Sur votre plate-forme, vous devez utiliser ;
comme séparateur de chemin, comme indiqué précédemment ici et ici .
Il suffit de suivre ces étapes:
1) Installer Eclipse
2) Importer Apache dans Eclipse
3) Installer MySQL
4) Téléchargez mysqlconnector/J
5) Décompressez le fichier compressé pour le parcourir jusqu'à ce que vous obteniez le fichier bin. Placez ensuite tous les fichiers présents dans le dossier contenant bin dans C:\Program Files\mysql\mysql server5.1 /, Puis indiquez le même chemin que l'adresse tout en définissant le pilote dans Eclipse.
C'est tous les gars très faciles.
Ok, après avoir eu le même problème et après avoir lu certaines réponses ici et ailleurs. il semble que mettre external lib
dans WEB-INF/lib
n’est pas une bonne idée car il pollute webapp/JRE libs with server-specific libraries
- pour plus d’informations, vérifiez cette réponse "
Une autre solution que je ne recommande PAS est la suivante: pour le copier dans le dossier Tomcat/lib. bien que cela puisse fonctionner, il sera difficile de gérer la dépendance pour un projet partagé (git par exemple).
Créez le dossier vendor
. mettez là toute votre bibliothèque externe. mappez ensuite ce dossier en tant que dépendance de votre projet. dans Eclipse vous devez
build path
Project Properties
-> Java build path
Libraries
-> ajouter une bibliothèque externe ou toute autre solution pour ajouter vos fichiers/dossiersdeployment Assembly
( reference ) Project Properties
-> Deployment Assembly
Add
-> Java Build Path Entries
Utilisez maven
(ou n’importe quelle alternative) pour gérer la dépendance du projet
Plusieurs fois, j'ai été confronté à ce problème, j'ai connu ClassNotFoundException . Si jar n'est pas à l'emplacement physique.
Assurez-vous donc que le fichier .jar (connecteur mysql) se trouve à l’emplacement physique du dossier lib WEB-INF. et assurez-vous de redémarrer Tomcat en utilisant la commande shutdown dans cmd . cela devrait fonctionner.
en supposant que votre projet repose sur Maven, ajoutez-le à votre POM:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-Java</artifactId>
<version>5.1.26</version>
</dependency>
Enregistrez> Construire> et testez à nouveau la connexion. Ça marche! La version actuelle du connecteur Java MySQL peut varier.
Mon problème était un peu différent. Au lieu de jdbc:Oracle:thin:@server:port/service
je l'ai eu comme server:port/service
.
jdbc:Oracle:thin:@
dans l'attribut url
de GlobalNamingResources.Resource était manquant. Mais j'ai négligé l'exception de Tomcat
Java.sql.SQLException: Cannot create JDBC driver of class 'Oracle.jdbc.driver.OracleDriver' for connect URL 'server:port/service'
Si le problème persiste encore,
Placez le fichier jar - Mysql-connector-Java-5.0.8-bin à l'intérieur du dossier Tomcat-> lib-> (où que vous ayez installé votre Tomcat). Et changez votre variable d'environnement (Terminé en cliquant sur Propriétés de Mycomputer -Paramètres système avancés- Variables d'environnement-Et définissez un nouveau nom de variable et des valeurs de variable comme l'emplacement de votre fichier lib. N'oubliez pas de saisir un; à la fin du chemin )
Si le problème persiste, essayez de télécharger commons-collections-2.0.jar ( http://www.docjar.com/jar_detail/commons-collections-2.0.jar.html ) et collez le fichier jar dans le même endroit où votre jar mysql réside (c.-à-d.) dans Tomcat-lib.
Nettoyez votre projet - Arrêtez votre serveur - Enfin, essayez de courir.
La seule solution qui a fonctionné pour moi est de placer le fichier .jar sous WEB-INF/lib. J'espère que cela aidera.
Mettez mysql-connector-Java-5.1.38-bin.jar dans le dossier C:\Program Files\Apache Software Foundation\Tomcat 7.0\lib.exécutez ce programme avec execute