java.lang.ClassNotFoundException: com.mysql.jdbc.Driver dans Eclipse

88

Quel est le problème avec le code, il y a beaucoup d'erreurs lors du débogage. J'écris un code pour une classe singleton pour se connecter à la base de données mysql.

Voici mon code

package com.glomindz.mercuri.util;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;

public class MySingleTon {
    String url = "jdbc:mysql://localhost:3306/";
    String dbName = "test";
    String driver = "com.mysql.jdbc.Driver";
    String userName = "root";
    String password = "";

    private static MySingleTon myObj;   
    private Connection Con ;
    private MySingleTon() {
        System.out.println("Hello");
        Con= createConnection();
    }

    @SuppressWarnings("rawtypes")
    public Connection createConnection() {
        Connection connection = null;
        try {
            // Load the JDBC driver
            Class driver_class = Class.forName(driver);
            Driver driver = (Driver) driver_class.newInstance();
            DriverManager.registerDriver(driver);
            connection = DriverManager.getConnection(url + dbName);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        }
        return connection;
    }

    /**
     * Create a static method to get instance.
     */
    public static MySingleTon getInstance() {
        if (myObj == null) {
            myObj = new MySingleTon();
        }
        return myObj;
    }

    public static void main(String a[]) {
        MySingleTon st = MySingleTon.getInstance();
    }
}

Je suis nouveau sur java. Veuillez aider.

atikul hussain
la source
2
Le fichier jar du pilote est-il dans votre chemin de classe?
NINCOMPOOP
assurez-vous que vous avez synchronisé sur votre getInstance ()
Siddharth
Copie
pathikrit
1
Vous devez coller le fichier jar dans le répertoire lib de votre serveur Web, si vous obtenez l'erreur à l'exécution. tandis que, si vous obtenez l'erreur au moment de la compilation, ajoutez le fichier jar dans le chemin de construction.
djangodude

Réponses:

124

Il semble que la bibliothèque de connectivité mysql ne soit pas incluse dans le projet. Résolvez le problème en suivant l'une des solutions proposées:

  • SOLUTION MAVEN PROJECTS

Ajoutez la dépendance mysql-connector au fichier projet pom.xml:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.39</version>
</dependency>

Voici toutes les versions: https://mvnrepository.com/artifact/mysql/mysql-connector-java

  • SOLUTION POUR TOUS LES PROJETS

Ajoutez la bibliothèque jar manuellement au projet.

Cliquez avec le bouton droit sur le projet -> chemin de construction -> configurer le chemin de construction

Sous Libraries Tab presse Add External Jar et Selectvotre pot.

Vous pouvez trouver le zip pour le connecteur mysql ici

  • Explication:

Lors de la construction du projet, java vous renvoie une exception car un fichier (la classe com.mysql.jdbc.Driver) de la bibliothèque de connectivité mysql est introuvable. La solution ajoute la bibliothèque au projet et java trouvera le pilote com.mysql.jdbc.

R9J
la source
7
Et si nous n'utilisons aucun IDE et fonctionnons simplement sur notre terminal? Alors comment faire face à ce problème?
Achyuta Aich
2
Le problème ne sera pas résolu tant que vous n'aurez pas ajouté le mysql-connector-java-8.0.15.jarfichier dans le apache-tomcat-9.0.16\libdossier, comme suggéré par @Asad.
SWETA KESUR
53

Si vous avez l'erreur dans votre IDE (erreur de compilation), vous devez ajouter votre fichier jar mysql-connector à vos bibliothèques et l'ajouter également à votre bibliothèque de projet référencée.

Si vous obtenez cette erreur lorsque vous l'exécutez, c'est probablement parce que vous n'avez pas inclus le fichier JAR du connecteur mysql dans le dossier lib de votre serveur Web.

Ajoutez mysql-connector-java-5.1.25-bin.jarà votre classpath et également au répertoire lib de votre serveur Web. Le chemin de la bibliothèque Tomcat est donné à titre d'exempleTomcat 6.0\lib

Asad
la source
1
Et si nous n'utilisons aucun IDE et fonctionnons simplement sur notre terminal? Alors comment faire face à ce problème?
Achyuta Aich
si vous n'utilisez aucun IDE, vous devez ajouter le chemin du fichier jar à votre chemin de classe
Asad
2
L'ajout à la bibliothèque du serveur est un point important à noter ici, merci a travaillé pour moi
Chandra_S
14

Pour les projets basés sur Gradle , vous avez besoin d'une dépendance sur MySQL Java Connector :

dependencies {
    compile 'mysql:mysql-connector-java:6.0.+'
}
naXa
la source
Ce qui a fini par fonctionner pour moi était runtime 'mysql:mysql-connector-java:6.0.+'.
itsmichaelwang
11

Vous devrez inclure le pilote jar pour MySQL MySQL Connector Jar dans votre chemin de classe.

Si vous utilisez Eclipse: Comment ajouter des bibliothèques dépendantes dans Eclipse

Si vous utilisez la ligne de commande, incluez le chemin d'accès au fichier jar du pilote à l'aide du paramètre -cp de java.

java -cp C:\lib\* Main
Narendra Pathai
la source
Et si nous n'utilisons aucun IDE et fonctionnons simplement sur notre terminal? Alors comment faire face à ce problème?
Achyuta Aich
1
Utilisation de -cpdonne Impossible de trouver ou de charger l'erreur de classe principale. Dois-je placer la classe principale dans un autre dossier?
zygimantus
11

Tout le monde a écrit une réponse, mais je suis toujours surpris que personne n'y ait répondu en utilisant le meilleur moyen simple.
Les personnes répondent qui incluent le fichier jar. Mais, l'erreur se produira toujours.

La raison en est que le fichier jar n'est pas déployé lorsque le projet est exécuté. Donc, ce que nous devons faire est de dire à l'EDI de déployer également ce fichier jar.

Les gens ici ont répondu tellement de fois qu'ils ont mis ce fichier jar dans le dossier lib de WEB-INF. Cela semble correct, mais pourquoi le faire manuellement. Il existe un moyen simple. Vérifiez les étapes ci-dessous:

Étape 1: Si vous n'avez pas référencé le fichier jar dans le projet, référencez-le comme ceci.

Cliquez avec le bouton droit sur le projet et accédez aux propriétés du projet. Ensuite, accédez au chemin de construction java, puis ajoutez un fichier jar externe via celui-ci.

Mais cela ne résoudra toujours pas le problème car l'ajout du fichier jar externe via le chemin de compilation ne permet que de compiler les classes, et le fichier jar ne sera pas déployé lorsque vous exécutez le projet. Pour cela, suivez cette étape

Cliquez avec le bouton droit sur le projet et accédez aux propriétés du projet. Ensuite, accédez à l' assembly de déploiement, puis appuyez sur Ajouter , puis accédez aux entrées du chemin de construction java et ajoutez vos bibliothèques, qu'il s'agisse de jstl, mysql ou de tout autre fichier jar. ajoutez-les au déploiement. Ci-dessous, les deux images qui le montrent

Avant d'ajouter

Après l'ajout

Tahir Hussain Mir
la source
Merci mec. Ça a marché. Pourquoi d'autres n'ont pas mentionné cela, peut-être parce qu'il s'agit d'une solution pour uniquement une application Web dynamique utilisant Eclipse
Sayka
@sayka ouais, ça pourrait être le cas.
Tahir Hussain Mir
8

L'API JDBC se compose principalement d'interfaces qui fonctionnent indépendamment de toute base de données. Un pilote spécifique à la base de données est requis pour chaque base de données qui implémente l'API JDBC.

Téléchargez d'abord le fichier jar du connecteur MySQL sur www.mysql.com, puis:

Right Click the project -- > build path -- > configure build path

Dans l'onglet bibliothèques, appuyez sur Add External Jaret sélectionnez votre pot.

Sathish SR
la source
3

Pour les projets basés sur Maven, vous avez besoin d'une dépendance.

<dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.38</version>
</dependency>
Tomtomssi
la source
2
Pourquoi PostgreSQL? La question concerne MySQL.
naXa
Modification de la réponse pour correspondre à la question
tomtomssi
2

Dans le projet dans le dossier Bibliothèques -> clic droit -> Ajouter une bibliothèque -> Mysqlconnector 5.1

Kika_Fortez
la source
2

Le connecteur de pilote ne se trouve pas dans votre chemin de génération. Configurez le chemin de construction et pointez-le vers le 'mysql-connector-java-5.1.25-bin.jar' (vérifiez la version que vous utilisez). Vous pouvez également utiliser maven: D

Shikjohari
la source
1

Aussi banal que cela puisse paraître dans mon cas, la version de netbeans maven project 7.2.1 était différente. Il existe un dossier dans le projet appelé dépendances. Faites un clic droit, puis une fenêtre contextuelle apparaît dans laquelle vous pouvez rechercher des packages. Dans la zone de requête, mettez

mysql-connector

Cela fera apparaître les correspondances (il semble qu'il le fasse contre un référentiel). Double-cliquez puis installez.

Paul
la source
1

C'est parce que le dossier WEB-INF n'existe pas à l'emplacement dans le sous-répertoire de l'erreur. Vous compilez l'application pour utiliser le dossier WEB-INF sous public_html OU copiez le dossier WEB-INF dans le sous-dossier comme dans l'erreur ci-dessus.

MilesWeb
la source
1

Pour IntelliJ Idea, accédez à la structure de votre projet (fichier, structure du projet) et ajoutez le fichier .jar du connecteur mysql à votre bibliothèque globale. Une fois là-bas, faites un clic droit dessus et choisissez «Ajouter aux modules». Appuyez sur Appliquer / OK et vous devriez être prêt à partir.

Michael Sims
la source
0

L'exception peut également se produire car le chemin de classe n'est pas défini.

Après des heures de recherche et parcourant littéralement des centaines de pages, le problème était que le chemin de classe de la bibliothèque n'était pas défini.

Définissez le chemin d'accès aux classes comme suit dans votre machine Windows

set classpath=path\to\your\jdbc\jar\file;.
Dur
la source
0

Si vous utilisez tomcat, avec le répertoire du projet, vous devez également copier le fichier jar du connecteur de base de données dans tomcat / lib. cela a fonctionné pour moi

Santosh Kadam
la source
0

Cela doit être utilisé à partir de 2020

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.18</version>
    </dependency>
SuperEye
la source
0

Je développe une application JavaFX11 simple avec une base de données SQLite dans Eclipse IDE . Pour générer un rapport, j'ai ajouté des pots Jasper. Soudain, il jette l' erreur "CECI" .

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

Il fonctionnait bien (AVANT CET AJOUT). Mais soudain!

Je n'utilise pas maven ou d'autres gestionnaires pour cette application simple. J'ajoute des pots manuellement.

J'ai créé "User Library" et ajouté mes pots à partir de dossiers externes.

ZONE PROBLEME: Ma "Bibliothèque utilisateur" est marquée comme bibliothèque système. Je viens de supprimer le marquage. Maintenant, ce n'est pas une bibliothèque système. "MAINTENANT MON PROJET FONCTIONNE BIEN".

DEBUG MYSELF: J'ai essayé d'autres choses: AT RUN CONFIGURATION: Essayez, supprimez la bibliothèque et ajoutez les jars un par un et voyez. - ici, vous devez supprimer tous les jars un par un, il n'y a pas de sélection de tout et de suppression dans eclipse maintenant dans la configuration d'exécution. Ainsi, les messages d'erreur changent d'un bocal à l'autre.

J'espère que cela aide quelqu'un.

Sudhakar Krishnan
la source