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


90

Cosa c'è di sbagliato nel codice ci sono molti errori durante il debug. Sto scrivendo un codice per una classe singleton per connettersi con il database mysql.

Ecco il mio codice

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

Sono nuovo in Java. Per favore aiuto.


2
Il file jar del driver è nel tuo classpath?
NINCOMPOOP

assicurati di esserti sincronizzato sul tuo getInstance ()
Siddharth


1
Devi incollare il file jar nella directory lib del tuo webserver, se ricevi l'errore in runtime. mentre, se ricevi l'errore in fase di compilazione, aggiungi il jar nel percorso di compilazione.
djangodude

Risposte:


125

Sembra che la libreria di connettività mysql non sia inclusa nel progetto. Risolvi il problema seguendo una delle soluzioni proposte:

  • SOLUZIONE PROGETTI MAVEN

Aggiungi la dipendenza mysql-connector al file di progetto pom.xml:

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

Ecco tutte le versioni: https://mvnrepository.com/artifact/mysql/mysql-connector-java

  • TUTTI I PROGETTI SOLUZIONE

Aggiungi manualmente la libreria jar al progetto.

Fare clic con il pulsante destro del mouse sul progetto -> percorso di compilazione -> configurare il percorso di compilazione

In Libraries Tab stampa Add External Jar e il Selecttuo barattolo.

Puoi trovare zip per mysql-connector qui

  • Spiegazione:

Durante la creazione del progetto, java genera un'eccezione perché un file (la classe com.mysql.jdbc.Driver) dalla libreria di connettività mysql non viene trovato. La soluzione è l'aggiunta della libreria al progetto e java troverà com.mysql.jdbc.Driver


7
Cosa succede se non stiamo utilizzando alcun IDE e semplicemente in esecuzione sul nostro terminale? Allora come affrontare questo problema?
Achyuta Aich

2
Il problema non verrà risolto finché non aggiungi il mysql-connector-java-8.0.15.jarfile nella apache-tomcat-9.0.16\libcartella, come suggerito da @Asad.
SWETA KESUR

53

Se hai ricevuto l'errore nel tuo IDE (errore in fase di compilazione), devi aggiungere il tuo file jar mysql-connector alle tue librerie e aggiungerlo anche alla tua libreria di riferimento del progetto.

Se ricevi questo errore quando lo esegui, probabilmente è perché non hai incluso il file JAR mysql-connector nella cartella lib del tuo server web.

Aggiungi mysql-connector-java-5.1.25-bin.jaral tuo classpath e anche alla directory lib del tuo webserver. Il percorso lib di Tomcat è fornito come esempioTomcat 6.0\lib


1
Cosa succede se non stiamo utilizzando alcun IDE e semplicemente in esecuzione sul nostro terminale? Allora come affrontare questo problema?
Achyuta Aich

se non stai usando alcun IDE, dovresti aggiungere il percorso del file jar al tuo classpath
Asad

2
L'aggiunta alla libreria del server è un punto importante da notare qui, grazie ha funzionato per me
Chandra_S

14

Per i progetti basati su Gradle è necessaria una dipendenza da MySQL Java Connector :

dependencies {
    compile 'mysql:mysql-connector-java:6.0.+'
}

Quello che ha finito per funzionare per me è stato runtime 'mysql:mysql-connector-java:6.0.+'.
itsmichaelwang

14

Tutti hanno scritto una risposta, ma sono ancora sorpreso che nessuno abbia effettivamente risposto utilizzando il modo più semplice.
Le persone rispondono che includono il file jar. Tuttavia, l'errore si verificherà comunque.

Il motivo è che il jar non viene distribuito quando viene eseguito il progetto. Quindi, quello che dobbiamo fare è dire all'IDE di distribuire anche questo jar.

Le persone qui hanno risposto così tante volte che hanno messo quel file jar nella cartella lib di WEB-INF. Sembra a posto, ma perché farlo manualmente. C'è un modo semplice. Controlla i passaggi seguenti:

Passaggio 1: se non hai fatto riferimento al file jar nel progetto, fai riferimento in questo modo.

Fare clic con il tasto destro sul progetto e andare alle proprietà del progetto. Quindi, vai al percorso di compilazione java, quindi aggiungi il file jar esterno tramite quello.

Ma questo non risolverà ancora il problema perché l'aggiunta del jar esterno tramite il percorso di compilazione aiuta solo a compilare le classi e il jar non verrà distribuito quando si esegue il progetto. Per questo segui questo passaggio

Fare clic con il tasto destro sul progetto e andare alle proprietà del progetto. Quindi, vai al Deployment Assembly quindi premi Aggiungi , quindi vai alle voci del percorso di compilazione java e aggiungi le tue librerie se si tratta di jstl, mysql o qualsiasi altro file jar. aggiungili alla distribuzione. Di seguito sono riportate le due immagini che lo visualizzano.

Prima di aggiungere

Dopo aver aggiunto


Grazie amico. Ha funzionato. Perché altri non lo hanno menzionato forse perché questa è una soluzione solo per applicazioni web dinamiche che utilizzano Eclipse
Sayka

@sayka sì, potrebbe essere il caso.
Tahir Hussain Mir

@TahirHussainMir Grazie mille. Questa risposta è davvero utile :-)
ddmmcc

11

Dovrai includere il file jar del driver per MySQL MySQL Connector Jar nel tuo classpath.

Se stai usando Eclipse: come aggiungere librerie dipendenti in Eclipse

Se stai utilizzando la riga di comando, includi il percorso del file jar del driver utilizzando il parametro -cp di java.

java -cp C:\lib\* Main

Cosa succede se non stiamo utilizzando alcun IDE e semplicemente in esecuzione sul nostro terminale? Allora come affrontare questo problema?
Achyuta Aich

1
L'utilizzo di -cpdà Impossibile trovare o caricare l'errore della classe principale. Devo mettere la classe principale in un'altra cartella?
zygimantus


8

L'API JDBC consiste principalmente di interfacce che funzionano indipendentemente da qualsiasi database. È richiesto un driver specifico del database per ogni database che implementa l'API JDBC.

Prima scarica il jar del connettore MySQL da www.mysql.com, quindi:

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

Nella scheda librerie premi Add External Jare seleziona il tuo vaso.


3

Per i progetti basati su Maven è necessaria una dipendenza.

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

2
Perché PostgreSQL? La domanda riguarda MySQL.
naXa

Risposta modificata in modo che corrisponda alla domanda
tomtomssi

2

Nel progetto nella cartella Librerie -> clic destro -> Aggiungi libreria -> Mysqlconnector 5.1


2

Il connettore del driver non è nel percorso di compilazione. Configura il percorso di compilazione e indirizzalo a "mysql-connector-java-5.1.25-bin.jar" (controlla la versione che stai utilizzando). In alternativa puoi usare Maven: D


2

Per IntelliJ Idea, vai alla struttura del tuo progetto (File, Project Structure) e aggiungi il file .jar del connettore mysql alla tua libreria globale. Una volta lì, fai clic destro su di esso e scegli "Aggiungi a moduli". Premi Applica / OK e dovresti essere a posto.


1

Per quanto banale possa sembrare nel mio caso, la versione netbeans del progetto maven 7.2.1 era diversa. C'è una cartella nel progetto chiamata dipendenze. Fare clic con il pulsante destro del mouse e quindi viene visualizzata una finestra popup in cui è possibile cercare i pacchetti. Nell'area delle query inserire

mysql-connector

Farà apparire le corrispondenze (sembra che lo faccia contro qualche repository). Fare doppio clic, quindi installare.


1

È perché la cartella WEB-INF non esiste nella posizione nella sottodirectory dell'errore. Compilare l'applicazione per utilizzare la cartella WEB-INF in public_html OPPURE copiare la cartella WEB-INF nella sottocartella come nell'errore precedente.


0

L'eccezione può verificarsi anche a causa della mancata definizione del percorso di classe.

Dopo ore di ricerca e letteralmente attraversando centinaia di pagine, il problema era che il percorso di classe della libreria non era definito.

Imposta il percorso di classe come segue nel tuo computer Windows

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


0

Se stai usando tomcat, insieme alla directory del progetto dovresti anche copiare il file jar del connettore del database in tomcat / lib. questo ha funzionato per me


0

Questo deve essere utilizzato a partire dal 2020

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

0

Sto sviluppando una semplice applicazione JavaFX11 con database SQLite in Eclipse IDE . Per generare il report ho aggiunto i vasi Jasper. All'improvviso genera l' errore "QUESTO" .

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

Funzionava bene (PRIMA DI QUESTA AGGIUNTA). Ma improvvisamente!

Non sto usando Maven o altri gestori per questa semplice applicazione. Sto aggiungendo i barattoli manualmente.

Ho creato "Libreria utente" e aggiunto i miei vasi da cartelle esterne.

AREA DEL PROBLEMA: La mia "Libreria utente" è contrassegnata come libreria di sistema. Ho appena rimosso il segno. Ora non è una libreria di sistema. "ORA IL MIO PROGETTO FUNZIONA BENE".

DEBUG MYSELF: Ho provato altre cose: IN CORSO CONFIGURAZIONE: Prova a rimuovere la libreria e aggiungi i barattoli uno per uno e guarda. - qui devi eliminare tutti i jar uno per uno, non c'è selezionare tutto e rimuoverlo in eclipse adesso nella configurazione di esecuzione. Quindi i messaggi di errore cambiano da un barattolo all'altro.

Spero che questo aiuti qualcuno.


0
I was also facing the same problem

Scarica file jar mysql-connector-java

incollalo nel file C:\Program Files\Apache Software Foundation\Tomcat 9.0\lib

Spero che questo lavoro anche per te !!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.