web-dev-qa-db-fra.com

ClassNotFoundException com.mysql.jdbc.Driver

Cette question aurait pu poser ici le nombre de fois. Après avoir fait quelques recherches sur Google pour l'erreur ci-dessus et avoir fait une mise à jour, je ne comprends pas pourquoi je reçois toujours cette erreur. J'ai déjà mis mon pilote-- mysql-connector-Java-5.1.5-bin dans le classpath:

Java_Home\jre\lib\
Java_Home\jre\lib\ext\
Java_Home\lib

et le code que j'utilise pour me connecter à la base de données mysql est:

try{
Class.forName("com.mysql.jdbc.Driver");

Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/mail","root","");

Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select message_body from deadletter");
String dbtime;
while (rs.next()) {
dbtime = rs.getString(1);
System.out.println(dbtime);
} 

con.close();

}
catch (SQLException e) {
        System.out.println("Connection Failed! Check output console");
        e.printStackTrace();
        }

    }

et le stacktrace complet de l'exception ci-dessus est:

Java.lang.ClassNotFoundException: com.mysql.jdbc:Driver
    at Java.net.URLClassLoader$1.run(URLClassLoader.Java:200)
    at Java.security.AccessController.doPrivileged(Native Method)
    at Java.net.URLClassLoader.findClass(URLClassLoader.Java:307)
    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:307)
    at Sun.misc.Launcher$AppClassLoader.loadClass(Launcher.Java:301)
    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:252)
    at Java.lang.ClassLoader.loadClassInternal(ClassLoader.Java:320)
    at Java.lang.Class.forName0(Native Method)  
    at Java.lang.Class.forName(Class.Java:169)
    at mail.main(mail.Java:114)  

Maintenant, qu'est-ce qui ne va pas que je fais ici?

35
Dusk

La cause la plus courante est qu’il existe un conflit entre l’origine de chargement de vos classes. Par exemple, si vous avez 2 emplacements et que l’un a des pilotes JDBC et l’autre pas, si votre chargeur de classe se charge depuis le premier emplacement et que certaines classes du premier emplacement souhaitent utiliser le pilote - le pilote n’est pas là. Recherchez donc les fichiers JAR en double qui utilisent votre pilote.

22
Bostone

Si vous rencontrez ce problème avec Eclipse, j'ai suivi de nombreuses solutions différentes, mais celle qui a fonctionné pour moi est la suivante:

  1. Cliquez avec le bouton droit sur votre dossier de projet et ouvrez les propriétés.

  2. Dans le panneau de droite, sélectionnez Java Build Path puis accédez à l'onglet Bibliothèques.

  3. Sélectionnez Ajouter des fichiers JAR externes pour importer le pilote mysql.

  4. Dans le panneau de droite, sélectionnez Assemblage de déploiement.

  5. Sélectionnez Ajouter ..., puis sélectionnez Java Entrées du chemin de construction et cliquez sur Suivant.

  6. Vous devriez voir le pilote SQL sur la liste. Sélectionnez-le et cliquez en premier.

Et c'est tout! Essayez de l'exécuter à nouveau! À votre santé!

29
Kenneth Key

J'ai le même problème mais j'ai trouvé ceci après une longue recherche: http://www.herongyang.com/JDBC/MySQL-JDBC-Driver-Load-Class.html

Mais j'ai fait du changement. Je mets le pilote dans le même dossier que mon ConTest.Java fichier et le compiler, résultant en ConTest.class.

Donc, dans ce dossier ont

ConTest.class
mysql-connector-Java-5.1.14-bin.jar

et j'écris ceci

Java -cp .;mysql-connector-Java-5.1.14-bin.jar ConTest

De cette façon, si vous n'utilisez pas de IDE seulement cmd dans Windows ou Shell sous Linux.

11
ismail shepl

this ans est destiné à l'utilisateur Eclipse ......

d'abord, vérifiez que le fichier jdbc jar est ajouté aux bibliothèques d'oreille ....

si oui ... alors cocher ... dans Web Content-> dossier Web-> lib

et passé ici jdbc fichier jar dans le dossier lib .....

5
Gorgal Nilesh B.

Qu'avez-vous mis exactement dans lib, jre/lib ou jre/lib/ext? Était-ce le pot mysql-connector-Java-5.1.5-bin.jar ou autre chose (comme un répertoire)?

À propos, je ne le mettrais pas dans lib, jre/lib ou jre/lib/ext, il existe d'autres moyens d'ajouter un fichier jar au classpath. Vous pouvez le faire en l'ajoutant explicitement à la variable d'environnement CLASSPATH. Ou vous pouvez utiliser le -cp option de Java. Mais c'est une autre histoire.

3
Pascal Thivent

Si vous utilisez NetBeans, suivez les étapes suivantes:

  1. Faites un clic droit sur 'Bibliothèques' et sélectionnez 'Ajouter une bibliothèque ..'
  2. Faites défiler la liste des "Bibliothèques globales" et sélectionnez "Pilote MySQL JDBC", puis cliquez sur "Ajouter une bibliothèque".
3
Ram Kumar Shrestha

1) Télécharger le connecteur à partir d'ici https://www.mysql.com/products/connector/

2) Sélectionnez le pilote JDBC pour mysql

3) cliquez sur Platform Independent (Architecture Independent), Zip Archive

4) Téléchargez le fichier et décompressez-le

5) (Pour Eclipse) Cliquez sur Projet-> Propriétés-> Java Chemin de construction-> Bibliothèques (pour Netbeans) cliquez sur les bibliothèques sur la barre de gauche -> ajouter un fichier jar.

6) Cliquez sur ajouter un pot externe

7) sélectionnez mysql-connector-Java-5.1.40-bin.jar

8) Fait!

3
Omkar Frozen

Dans NetBeans,

  1. clic droit sur les bibliothèques, sélectionnez properties
  2. sélectionnez l'onglet rub
  3. là vous devez ajouter le mysql-connector-Java.jar et appliquer
2

Dans netbean Faites un clic droit sur votre projet, puis cliquez sur Bibliothèques, puis sur l'onglet Exécuter, ajoutez une bibliothèque, puis sélectionnez le connecteur mysql.

1
badmus306

Ok, je trouve une solution en changeant le chemin de mysql-connector-Java.jar en chemin suivant:

ProjectName/WebContent/Web-inf/lib/mysql-conector-Java.jar 

Vous devez donc ajouter le connecteur pour projeter à nouveau et supprimer le précédent.

1
Luillyfe

Vous devriez télécharger connecteur MariaDB .
Ensuite:

  1. Développez votre projet.
  2. Faites un clic droit sur Libraries.
  3. Sélectionnez Add Jar/Folder.
  4. Ajouter mariadb-Java-client-2.0.2.jar que vous venez de télécharger.
1
jaleel

il suffit de copier et coller le fichier jar du connecteur mysql dans votre dossier de projet, puis de créer le chemin, cela fonctionnera définitivement.

0
Ishaan Kothidar

Dans IntelliJ Faites ce qu’ils disent dans Eclipse "Si vous rencontrez ce problème avec Eclipse, j’ai suivi de nombreuses solutions différentes, mais celle qui a fonctionné pour moi est la suivante:

Cliquez avec le bouton droit sur votre dossier de projet et ouvrez les propriétés.

Dans le panneau de droite, sélectionnez Java Build Path puis accédez à l'onglet Bibliothèques.

Sélectionnez Ajouter des fichiers JAR externes pour importer le pilote mysql.

Dans le panneau de droite, sélectionnez Assemblage de déploiement.

Sélectionnez Ajouter ..., puis sélectionnez Java Entrées du chemin de construction et cliquez sur Suivant.

Vous devriez voir le pilote SQL sur la liste. Sélectionnez-le et cliquez en premier.

Et c'est tout! Essayez de l'exécuter à nouveau! À votre santé!"

Ici, nous devons ajouter le fichier jar dans la structure du projet -> Bibliothèques -> + (ajouter)

0
karan patel

La seule chose qui a fonctionné pour moi a été de télécharger le fichier mysql-connector-Java-5.0.8-bin.jar directement à partir du site Web de MySQL:

http://dev.mysql.com/downloads/connector/j/3.1.html

Ensuite, si vous utilisez Eclipse, collez ce fichier dans mysql-connector-Java-5.0.8-bin.jar dans le dossier lib WEB-INF.

Si ne fonctionne pas, essayez l'une des solutions affichées dans ce lien: http://javarevisited.blogspot.com/2012/03/jdbc-javalangclassnotfoundexception.html

0
CommonSenseCode

Ok..Peut-être que je peux aussi apporter ma solution .. Faites un clic droit sur project-properties -> Deployment Assembly configuré avec les bibliothèques Web qui a ce connecteur SQL ... Cela a fonctionné pour moi .. J'espère que cela fonctionne pour vous aussi

0
user3619178

J'ai rencontré la même erreur après la mise à niveau de mon Java à 1.8.0_101. Essayez ceci: i. Supprimez le fichier mysql.jar de votre chemin de construction. Ii. Nettoyez le serveur et le projet iii. Ajoutez le fichier jar retour au chemin de construction.

Travaillé pour moi.

0
Mwangi Thiga

La plupart des solutions possibles ont été abordées ci-dessus. D'après mon expérience de ce problème, j'ai placé mysql-connector-jar dans le dossier/WEB-INF/lib du module webapp et cela a bien fonctionné pour moi.

0
pradz_stack

Je garde le bocal mysql-connector avec mon projet plutôt que dans Javahome. En conséquence, vous pouvez être sûr qu'il peut être trouvé en étant sûr que c'est dans le classpath local. Un gros avantage est que vous pouvez plus le projet sur une autre machine et ne pas avoir à vous soucier de (ou oublier) pour le configurer à nouveau. Personnellement, j'aime l'inclure dans le contrôle de version.

0
WillfulWizard

Copiez simplement le fichier jar du pilote JDBC MySQL et collez-le dans Tomcat ou dans le dossier lib du serveur. Ça marche pour moi.

0
Pramit Patel