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

88

Was ist falsch mit dem Code gibt es viele Fehler beim Debuggen. Ich schreibe einen Code für eine Singleton-Klasse, um eine Verbindung mit der Datenbank mysql herzustellen.

Hier ist mein 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();
    }
}

Ich bin neu in Java. Bitte helfen Sie.

Atikul Hussain
quelle
2
Befindet sich der Treiber in Ihrem Klassenpfad?
NINCOMPOOP
Stellen Sie sicher, dass Sie auf Ihrem getInstance ()
Siddharth
Mögliches Duplikat von ClassNotFoundException com.mysql.jdbc.Driver
pathikrit
1
Sie müssen die JAR-Datei in das lib-Verzeichnis Ihres Webservers einfügen, wenn Sie zur Laufzeit den Fehler erhalten. Wenn beim Kompilieren der Fehler auftritt, fügen Sie das JAR im Erstellungspfad hinzu.
Djangodude

Antworten:

124

Es scheint, dass die MySQL-Konnektivitätsbibliothek nicht im Projekt enthalten ist. Lösen Sie das Problem nach einer der vorgeschlagenen Lösungen:

  • MAVEN PROJECTS LÖSUNG

Fügen Sie der Projektdatei pom.xml die Abhängigkeit mysql-connector hinzu:

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

Hier sind alle Versionen: https://mvnrepository.com/artifact/mysql/mysql-connector-java

  • ALLE PROJEKTE LÖSUNG

Fügen Sie die JAR-Bibliothek manuell zum Projekt hinzu.

Klicken Sie mit der rechten Maustaste auf das Projekt -> Erstellungspfad -> Erstellungspfad konfigurieren

In der Libraries Tab Presse Add External Jar und SelectIhrem Glas.

Den Zip für MySQL-Connector finden Sie hier

  • Erläuterung:

Beim Erstellen des Projekts löst Java eine Ausnahme aus, da eine Datei (die Klasse com.mysql.jdbc.Driver) aus der MySQL-Konnektivitätsbibliothek nicht gefunden wird. Die Lösung besteht darin, die Bibliothek zum Projekt hinzuzufügen, und Java findet den com.mysql.jdbc.Driver

R9J
quelle
7
Was ist, wenn wir keine IDE verwenden und einfach auf unserem Terminal laufen? Wie gehe ich dann mit diesem Problem um?
Achyuta Aich
2
Das Problem wird erst gelöst, wenn Sie eine mysql-connector-java-8.0.15.jarDatei in den apache-tomcat-9.0.16\libOrdner einfügen, wie von @Asad vorgeschlagen.
SWETA KESUR
53

Wenn Sie den Fehler in Ihrer IDE (Kompilierungsfehler) erhalten haben, müssen Sie Ihre MySQL-Connector-JAR-Datei zu Ihren Bibliotheken hinzufügen und diese auch zu Ihrer referenzierten Projektbibliothek hinzufügen.

Wenn Sie diesen Fehler beim Ausführen erhalten, liegt dies wahrscheinlich daran, dass Sie die MySQL-Connector-JAR-Datei nicht in den lib-Ordner Ihres Webservers aufgenommen haben.

Fügen Sie mysql-connector-java-5.1.25-bin.jarIhrem Klassenpfad und auch dem lib-Verzeichnis Ihres Webservers hinzu. Der Tomcat-Lib-Pfad wird als Beispiel angegebenTomcat 6.0\lib

Asad
quelle
1
Was ist, wenn wir keine IDE verwenden und einfach auf unserem Terminal laufen? Wie gehe ich dann mit diesem Problem um?
Achyuta Aich
Wenn Sie keine IDE verwenden, sollten Sie Ihrem Klassenpfad den JAR-Dateipfad hinzufügen
Asad
2
Das Hinzufügen zur Server-Bibliothek ist ein wichtiger Punkt, den Sie hier beachten sollten.
Vielen
14

Für Gradle- basierte Projekte benötigen Sie eine Abhängigkeit von MySQL Java Connector :

dependencies {
    compile 'mysql:mysql-connector-java:6.0.+'
}
naXa
quelle
Was am Ende für mich gearbeitet hat, war runtime 'mysql:mysql-connector-java:6.0.+'.
itsmichaelwang
11

Sie müssen die Treiber-JAR für MySQL MySQL Connector Jar in Ihren Klassenpfad aufnehmen.

Wenn Sie Eclipse verwenden: So fügen Sie abhängige Bibliotheken in Eclipse hinzu

Wenn Sie die Befehlszeile verwenden, geben Sie den Pfad zum Treiber-JAR mit dem Parameter -cp von Java an.

java -cp C:\lib\* Main
Narendra Pathai
quelle
Was ist, wenn wir keine IDE verwenden und einfach auf unserem Terminal laufen? Wie gehe ich dann mit diesem Problem um?
Achyuta Aich
1
Using -cpgibt den Fehler der Hauptklasse nicht finden oder laden. Muss ich die Hauptklasse in einen anderen Ordner verschieben?
Zygimantus
11

Suchen (mysql-connector-java-bin)Sie hier in Ihrem Klassenpfad nach Glas

KhAn SaAb
quelle
11

Jeder hat eine Antwort geschrieben, aber ich bin immer noch überrascht, dass niemand sie tatsächlich auf die einfachste Weise beantwortet hat.
Die Leute antworten, die die JAR-Datei enthalten. Der Fehler tritt jedoch weiterhin auf.

Der Grund dafür ist, dass das JAR nicht ausgeführt wird, wenn das Projekt ausgeführt wird. Wir müssen also die IDE anweisen, auch dieses JAR bereitzustellen.

Die Leute hier haben so oft geantwortet, dass diese JAR-Datei in den lib-Ordner von WEB-INF gestellt wurde. Das scheint in Ordnung zu sein, aber warum manuell? Es gibt einen einfachen Weg. Überprüfen Sie die folgenden Schritte:

Schritt 1: Wenn Sie die JAR-Datei nicht in das Projekt referenziert haben, verweisen Sie wie folgt darauf.

Klicken Sie mit der rechten Maustaste auf das Projekt und gehen Sie zu den Projekteigenschaften. Gehen Sie dann zum Java-Erstellungspfad und fügen Sie über diesen eine externe JAR-Datei hinzu.

Dies wird das Problem jedoch immer noch nicht lösen, da das Hinzufügen der externen JAR-Datei über den Erstellungspfad nur beim Kompilieren der Klassen hilft und die JAR-Datei nicht bereitgestellt wird, wenn Sie das Projekt ausführen. Folgen Sie dazu diesem Schritt

Klicken Sie mit der rechten Maustaste auf das Projekt und gehen Sie zu den Projekteigenschaften. Gehen Sie dann zur Deployment Assembly, drücken Sie Hinzufügen , gehen Sie zu den Java-Erstellungspfadeinträgen und fügen Sie Ihre Bibliotheken hinzu, unabhängig davon, ob es sich um jstl, mysql oder eine andere JAR-Datei handelt. Fügen Sie sie zur Bereitstellung hinzu. Unten sind die beiden Bilder, die es anzeigen.

Vor dem Hinzufügen

Nach dem Hinzufügen

Tahir Hussain Mir
quelle
Danke Alter. Das hat funktioniert. Warum andere dies vielleicht nicht erwähnt haben, weil dies eine Lösung nur für dynamische Webanwendungen ist, die Eclipse verwenden
Sayka
@sayka ja, das könnte der Fall sein.
Tahir Hussain Mir
8

Die JDBC-API besteht hauptsächlich aus Schnittstellen, die unabhängig von einer Datenbank funktionieren. Für jede Datenbank, die die JDBC-API implementiert, ist ein datenbankspezifischer Treiber erforderlich.

Laden Sie zuerst das MySQL-Connector-JAR von www.mysql.com herunter und dann:

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

Drücken Add External JarSie auf der Registerkarte Bibliotheken und wählen Sie Ihr Glas aus.

Sathish SR
quelle
3

Für Maven-basierte Projekte benötigen Sie eine Abhängigkeit.

<dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.38</version>
</dependency>
Tomtomssi
quelle
2
Warum PostgreSQL? Die Frage betrifft MySQL.
NaXa
Die Antwort wurde entsprechend der Frage
bearbeitet
2

Im Projekt in den Ordner Bibliotheken -> Rechtsklick -> Bibliothek hinzufügen -> Mysqlconnector 5.1

Kika_Fortez
quelle
2

Der Treiberconnector befindet sich nicht in Ihrem Erstellungspfad. Konfigurieren Sie den Erstellungspfad und zeigen Sie auf die Datei 'mysql-connector-java-5.1.25-bin.jar' (überprüfen Sie die von Ihnen verwendete Version). Alternativ können Sie maven verwenden: D.

Shikjohari
quelle
1

Trivial, wie es in meinem Fall scheinen mag, war NetBeans Version Maven Project 7.2.1 anders. Im Projekt gibt es einen Ordner namens Abhängigkeiten. Klicken Sie mit der rechten Maustaste und es öffnet sich ein Popup-Fenster, in dem Sie nach Paketen suchen können. In den Abfragebereich setzen

mysql-connector

Es werden die Übereinstimmungen angezeigt (es scheint, dass dies gegen ein Repository erfolgt). Doppelklicken und dann installieren.

Paul
quelle
1

Dies liegt daran, dass der Ordner WEB-INF im Fehler nicht an der Stelle im Unterverzeichnis vorhanden ist. Sie kompilieren die Anwendung entweder so, dass sie den Ordner WEB-INF unter public_html verwendet, oder Sie kopieren den Ordner WEB-INF in den Unterordner wie im obigen Fehler.

MilesWeb
quelle
1

Wechseln Sie für IntelliJ Idea zu Ihrer Projektstruktur (Datei, Projektstruktur) und fügen Sie die JAR-Datei des MySQL-Connectors zu Ihrer globalen Bibliothek hinzu. Klicken Sie dort mit der rechten Maustaste darauf und wählen Sie "Zu Modulen hinzufügen". Klicken Sie auf Übernehmen / OK und Sie sollten bereit sein.

Michael Sims
quelle
0

Die Ausnahme kann auch auftreten, weil der Klassenpfad nicht definiert ist.

Nach stundenlanger Recherche und buchstäblichem Durchblättern von Hunderten von Seiten bestand das Problem darin, dass der Klassenpfad der Bibliothek nicht definiert wurde.

Stellen Sie den Klassenpfad auf Ihrem Windows-Computer wie folgt ein

set classpath=path\to\your\jdbc\jar\file;.
Hart
quelle
0

Wenn Sie tomcat verwenden, sollten Sie zusammen mit dem Projektverzeichnis auch die JAR-Datei des Datenbankconnectors nach tomcat / lib kopieren. das hat bei mir funktioniert

Santosh Kadam
quelle
0

Dies muss ab 2020 genutzt werden

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

Ich entwickle eine einfache JavaFX11-Anwendung mit SQLite-Datenbank in Eclipse IDE . Um einen Bericht zu erstellen, habe ich Jasper-Gläser hinzugefügt. Plötzlich wird "DIESER" Fehler ausgegeben .

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

Es lief gut (VOR DIESER ERGÄNZUNG). Aber plötzlich!

Ich verwende keine Maven oder andere Manager für diese einfache Anwendung. Ich füge Gläser manuell hinzu.

Ich habe "Benutzerbibliothek" erstellt und meine Gläser aus externen Ordnern hinzugefügt.

PROBLEMBEREICH: Meine "Benutzerbibliothek" ist als Systembibliothek markiert. Ich habe gerade die Markierung entfernt. Jetzt ist es keine Systembibliothek. "JETZT FUNKTIONIERT MEIN PROJEKT GUT".

DEBUG MYSELF: Versuchte andere Dinge: AT RUN CONFIGURATION: Versuchen Sie, Bibliothek zu entfernen und Gläser einzeln hinzuzufügen und zu sehen. - hier müssen Sie alle Gläser einzeln löschen, es gibt keine Auswahl aller und entfernen Sie in Eclipse gerade in der Ausführungskonfiguration. Die Fehlermeldungen ändern sich also von einem Glas zum anderen.

Hoffe das hilft jemandem.

Sudhakar Krishnan
quelle