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

89

Apa yang salah dengan kode ada banyak kesalahan saat debugging. Saya menulis kode untuk kelas tunggal untuk terhubung dengan database mysql.

Ini kode saya

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

Saya baru mengenal java. Tolong bantu.

atikul hussain
sumber
2
Apakah toples driver ada di classpath Anda?
NINCOMPOOP
pastikan bahwa Anda telah melakukan sinkronisasi pada getInstance ()
Siddharth
Kemungkinan duplikat ClassNotFoundException com.mysql.jdbc.Driver
pathikrit
1
Anda perlu menempelkan file jar ke direktori lib server web Anda, jika Anda mendapatkan kesalahan saat runtime. sedangkan, jika Anda mendapatkan error pada waktu kompilasi, tambahkan jar di jalur build.
djangodude

Jawaban:

124

Tampaknya pustaka konektivitas mysql tidak disertakan dalam proyek ini. Selesaikan masalah dengan mengikuti salah satu solusi yang diusulkan:

  • SOLUSI PROYEK MAVEN

Tambahkan dependensi mysql-connector ke file proyek pom.xml:

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

Ini Anda adalah semua versi: https://mvnrepository.com/artifact/mysql/mysql-connector-java

  • SOLUSI SEMUA PROYEK

Tambahkan perpustakaan jar secara manual ke proyek.

Klik kanan proyek -> jalur build -> konfigurasi jalur build

Di Libraries Tab tekan Add External Jar dan Selecttoples Anda.

Anda dapat menemukan zip untuk konektor mysql di sini

  • Penjelasan:

Saat membuat proyek, java memberikan pengecualian kepada Anda karena file (kelas com.mysql.jdbc.Driver) dari pustaka konektivitas mysql tidak ditemukan. Solusinya adalah menambahkan pustaka ke proyek, dan java akan menemukan file com.mysql.jdbc.Driver

R9J
sumber
7
Bagaimana jika kita tidak menggunakan IDE apa pun dan hanya berjalan di terminal kita? Lalu bagaimana cara mengatasi masalah ini?
Achyuta Aich
2
Masalah tidak akan terselesaikan sampai Anda menambahkan mysql-connector-java-8.0.15.jarfile ke apache-tomcat-9.0.16\libfolder, seperti yang disarankan oleh @Asad.
SWETA KESUR
53

Jika Anda mendapatkan kesalahan dalam IDE Anda (kesalahan waktu kompilasi), Anda perlu menambahkan file jar mysql-connector ke libs Anda dan menambahkannya ke perpustakaan referensi proyek Anda juga.

Jika Anda mendapatkan kesalahan ini saat menjalankannya, mungkin itu karena Anda belum menyertakan file JAR konektor mysql ke folder lib server web Anda.

Tambahkan mysql-connector-java-5.1.25-bin.jarke classpath Anda dan juga ke direktori lib server web Anda. Path lib Tomcat diberikan sebagai contohTomcat 6.0\lib

Asad
sumber
1
Bagaimana jika kita tidak menggunakan IDE apa pun dan hanya berjalan di terminal kita? Lalu bagaimana cara mengatasi masalah ini?
Achyuta Aich
jika Anda tidak menggunakan IDE apa pun maka Anda harus menambahkan path file jar ke classpath Anda
Asad
2
Menambahkan ke server lib adalah hal penting yang perlu diperhatikan di sini, terima kasih berhasil untuk saya
Chandra_S
14

Untuk proyek berbasis Gradle, Anda memerlukan ketergantungan pada Konektor Java MySQL :

dependencies {
    compile 'mysql:mysql-connector-java:6.0.+'
}
naXa
sumber
Apa yang akhirnya berhasil untuk saya adalah runtime 'mysql:mysql-connector-java:6.0.+'.
itsmichaelwang
12

Setiap orang telah menulis jawaban tetapi saya masih terkejut bahwa tidak ada yang benar-benar menjawabnya dengan menggunakan cara sederhana terbaik.
Orang-orang menjawab dengan menyertakan file jar. Tapi, kesalahan tetap akan terjadi.

Alasannya adalah, jar tidak di-deploy saat proyek dijalankan. Jadi, yang perlu kita lakukan adalah memberi tahu IDE untuk menerapkan jar ini juga.

Orang-orang di sini telah menjawab berkali-kali sehingga meletakkan file jar itu di folder lib WEB-INF. Kelihatannya oke, tapi kenapa melakukannya secara manual. Ada cara sederhana. Periksa langkah-langkah di bawah ini:

Langkah 1: Jika Anda belum mereferensikan file jar ke dalam proyek, referensikan seperti ini.

Klik kanan pada proyek dan pergi ke properti proyek. Lalu, buka jalur build java, lalu tambahkan file jar eksternal melalui itu.

Tapi ini tetap tidak akan menyelesaikan masalah karena menambahkan jar eksternal melalui jalur build hanya membantu dalam mengompilasi kelas, dan jar tidak akan diterapkan saat Anda menjalankan proyek. Untuk itu ikuti langkah ini

Klik kanan pada proyek dan pergi ke properti proyek. Lalu, buka Deployment Assembly lalu tekan Add , lalu buka entri java build path dan tambahkan library Anda apakah itu jstl, mysql atau file jar lainnya. tambahkan mereka ke penerapan. Di bawah ini adalah dua gambar yang menampilkannya.

Sebelum Menambahkan

Setelah Menambahkan

Tahir Hussain Mir
sumber
Terima kasih Bung. Itu berhasil. Mengapa orang lain tidak menyebutkan ini mungkin karena ini adalah solusi hanya untuk aplikasi web Dinamis yang menggunakan Eclipse
Sayka
@sayka ya, mungkin itu masalahnya.
Tahir Hussain Mir
11

Anda harus menyertakan driver jar untuk MySQL MySQL Connector Jar di jalur kelas Anda.

Jika Anda menggunakan Eclipse: Bagaimana cara menambahkan perpustakaan dependen di Eclipse

Jika Anda menggunakan baris perintah, sertakan jalur ke jar driver menggunakan parameter -cp java.

java -cp C:\lib\* Main
Narendra Pathai
sumber
Bagaimana jika kita tidak menggunakan IDE apa pun dan hanya berjalan di terminal kita? Lalu bagaimana cara mengatasi masalah ini?
Achyuta Aich
1
Menggunakan -cpmemberi Tidak dapat menemukan atau memuat kesalahan kelas utama. Apakah saya perlu meletakkan kelas Utama ke folder lain?
zygimantus
11

periksa jar (mysql-connector-java-bin)di classpath Anda unduh dari sini

KhAn SaAb
sumber
8

API JDBC sebagian besar terdiri dari antarmuka yang bekerja secara independen dari database apa pun. Driver khusus database diperlukan untuk setiap database yang mengimplementasikan JDBC API.

Pertama, unduh jar konektor MySQL dari www.mysql.com, lalu:

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

Di tab perpustakaan tekan Add External Jardan pilih toples Anda.

Sathish SR
sumber
3

Untuk proyek berbasis Maven, Anda memerlukan ketergantungan.

<dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.38</version>
</dependency>
tomtomssi
sumber
2
Mengapa PostgreSQL? Pertanyaannya adalah tentang MySQL.
naXa
Mengedit
2

Dalam proyek tersebut ke folder Libraries -> klik kanan -> Add Library -> Mysqlconnector 5.1

Kika_Fortez
sumber
2

Konektor driver tidak ada di jalur build Anda. Konfigurasikan jalur build dan arahkan ke 'mysql-connector-java-5.1.25-bin.jar' (periksa versi yang Anda gunakan). Alternatifnya Anda bisa menggunakan maven: D

shikjohari
sumber
2

Untuk IntelliJ Idea, buka struktur proyek Anda (File, Struktur Proyek), dan tambahkan file .jar konektor mysql ke perpustakaan global Anda. Sesampai di sana, klik kanan padanya dan pilih 'Tambahkan ke Modul'. Tekan Apply / OK dan Anda harus melakukannya dengan baik.

Michael Sims
sumber
1

Sepele karena mungkin tampak dalam kasus saya proyek netbeans versi maven 7.2.1 berbeda. Ada folder dalam proyek yang disebut dependensi. Klik kanan dan kemudian akan muncul jendela popup tempat Anda dapat mencari paket. Di area kueri, letakkan

mysql-connector

Ini akan memunculkan pertandingan (tampaknya melakukan ini terhadap beberapa repositori). Klik dua kali lalu instal.

Paul
sumber
1

Itu karena folder WEB-INF tidak ada di lokasi di sub direktori dalam kesalahan. Anda dapat mengkompilasi aplikasi untuk menggunakan folder WEB-INF di bawah public_html ATAU salin folder WEB-INF di sub folder seperti pada kesalahan di atas.

MilesWeb
sumber
0

Pengecualian juga dapat terjadi karena jalur kelas tidak ditentukan.

Setelah berjam-jam meneliti dan benar-benar menelusuri ratusan halaman, masalahnya adalah jalur kelas perpustakaan tidak ditentukan.

Tetapkan jalur kelas sebagai berikut di mesin windows Anda

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

Jika Anda menggunakan tomcat maka bersama dengan direktori proyek Anda juga harus menyalin file jar konektor database ke tomcat / lib. ini berhasil untuk saya

Santosh Kadam
sumber
0

Ini harus digunakan mulai tahun 2020

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.18</version>
    </dependency>
Mata Super
sumber
0

Saya sedang mengembangkan aplikasi JavaFX11 sederhana dengan Database SQLite di Eclipse IDE . Untuk menghasilkan laporan saya menambahkan toples Jasper. Tiba-tiba muncul kesalahan "INI" .

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

Itu berjalan dengan baik (SEBELUM PENAMBAHAN INI). Tapi tiba-tiba!

Saya tidak menggunakan maven atau manajer lain untuk aplikasi sederhana ini. Saya menambahkan stoples secara manual.

Saya membuat "Perpustakaan Pengguna" dan menambahkan toples saya dari folder eksternal.

AREA YANG TERJADI MASALAH: "Pustaka Pengguna" saya ditandai sebagai pustaka sistem. Saya baru saja menghapus tandanya. Sekarang bukan perpustakaan sistem. "SEKARANG PROYEK SAYA BERFUNGSI BAIK".

DEBUG MYSELF: Mencoba hal lain: SAAT BERJALAN KONFIGURASI: Coba, hapus perpustakaan dan tambahkan toples satu per satu dan lihat. - di sini Anda harus menghapus semua toples satu per satu, tidak ada pilih semua dan hapus di gerhana sekarang dalam konfigurasi yang dijalankan. Jadi pesan kesalahan berubah dari satu toples ke yang lain.

Semoga ini bisa membantu seseorang.

Sudhakar Krishnan
sumber