java.lang.ClassNotFoundException: com.mysql.jdbc.Eclipse'de Sürücü


90

Kodda yanlış olan şey, hata ayıklama sırasında çok fazla hata var. Veritabanı mysql ile bağlanmak için bir singleton sınıfı için bir kod yazıyorum.

İşte kodum

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

Java'da yeniyim. Lütfen yardım et.


2
Sınıf yolunuzda sürücü kavanozu var mı?
NINCOMPOOP

getInstance ()
Siddharth


1
Çalışma zamanında hata alıyorsanız, jar dosyasını web sunucunuzun kitaplık dizinine yapıştırmanız gerekir. oysa, derleme zamanında hata alıyorsanız, derleme yoluna jar dosyasını ekleyin.
djangodude

Yanıtlar:


125

Görünüşe göre mysql bağlantı kitaplığı projeye dahil edilmemiş . Önerilen çözümlerden birini uygulayarak sorunu çözün:

  • MAVEN PROJELERİ ÇÖZÜM

Mysql-bağlayıcı bağımlılığını pom.xml proje dosyasına ekleyin:

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

İşte tüm sürümler: https://mvnrepository.com/artifact/mysql/mysql-connector-java

  • TÜM PROJELER ÇÖZÜM

Jar kitaplığını projeye manuel olarak ekleyin.

Projeye sağ tıklayın -> inşa yolu -> inşa yolunu yapılandırın

In Libraries Tab basına Add External Jar ve Selectsenin kavanozun.

Mysql-connector için zip'i burada bulabilirsiniz

  • Açıklama:

Projeyi oluştururken, mysql bağlantı kitaplığından bir dosya (com.mysql.jdbc.Driver sınıfı) bulunamadığından java size bir istisna atar. Çözüm, kütüphaneyi projeye eklemektir ve java, com.mysql.jdbc.Driver'ı bulacaktır.


7
Ya herhangi bir IDE kullanmıyorsak ve sadece terminalimizde çalışıyorsak? O zaman bu problemle nasıl başa çıkılır?
Achyuta Aich

2
@Asad tarafından önerildiği gibi, mysql-connector-java-8.0.15.jardosyayı apache-tomcat-9.0.16\libklasöre ekleyene kadar sorun çözülmeyecek.
SWETA KESUR

53

IDE'nizde hata aldıysanız (derleme zamanı hatası), mysql-connector jar dosyanızı kütüphanelerinize eklemeniz ve bunu da referans proje kitaplığınıza eklemeniz gerekir.

Çalıştırırken bu hatayı alırsanız, bunun nedeni muhtemelen web sunucunuzun lib klasörüne mysql-connector JAR dosyasını eklememiş olmanızdır.

Ekle mysql-connector-java-5.1.25-bin.jarweb sunucunuzun lib dizinine de sınıf için ve. Tomcat kitaplık yolu örnek olarak verilmiştirTomcat 6.0\lib


1
Ya herhangi bir IDE kullanmıyorsak ve sadece terminalimizde çalışıyorsak? O zaman bu problemle nasıl başa çıkılır?
Achyuta Aich

herhangi bir IDE kullanmıyorsanız, sınıf yolunuza jar dosyası yolu eklemelisiniz
Asad

2
Sunucu
kitaplığına


14

Herkes bir cevap yazdı ama yine de hiç kimsenin bunu en basit şekilde cevaplamasına şaşırıyorum.
İnsanlar jar dosyasını içeren cevaplar. Ancak hata yine de ortaya çıkacaktır.

Bunun nedeni, proje çalıştırıldığında kavanozun konuşlandırılmamasıdır. Yani, yapmamız gereken şey, IDE'ye bu kavanozu da dağıtmasını söylemek.

Buradaki insanlar o kadar çok cevap verdiler ki jar dosyasını WEB-INF'in lib klasörüne koydular. Tamam gibi görünüyor, ama neden manuel olarak yapalım. Basit bir yolu var. Aşağıdaki adımları kontrol edin:

Adım 1: Jar dosyasını projeye referans vermediyseniz, bu şekilde referans verin.

Projeye sağ tıklayın ve proje özelliklerine gidin. Ardından, java oluşturma yoluna gidin, ardından bununla harici jar dosyası ekleyin.

Ancak bu yine de sorunu çözmeyecektir, çünkü harici jar'i derleme yolu ile eklemek yalnızca sınıfların derlenmesine yardımcı olur ve projeyi çalıştırdığınızda jar dağıtılmayacaktır. Bunun için bu adımı izleyin

Projeye sağ tıklayın ve proje özelliklerine gidin. Ardından, Dağıtım Derlemesine gidin ve Ekle'ye basın , ardından java oluşturma yolu girişlerine gidin ve jstl, mysql veya başka bir jar dosyası olsun, kitaplıklarınızı ekleyin. bunları dağıtıma ekleyin. Aşağıda onu gösteren iki resim var.

Eklemeden önce

Ekledikten sonra


Tesekkurler dostum. İşe yaradı. Neden başkaları bundan bahsetmedi çünkü bu yalnızca Eclipse kullanan Dinamik web uygulaması için bir çözüm
Sayka

@sayka evet, durum bu olabilir.
Tahir Hussain Mir

@TahirHussainMir Çok teşekkür ederim. Bu cevap gerçekten yararlı :-)
ddmmcc

11

Sınıf yolunuza MySQL MySQL Bağlayıcı Jar için sürücü kavanozu eklemeniz gerekir.

Eclipse kullanıyorsanız: Eclipse'e bağımlı kitaplıklar nasıl eklenir?

Komut satırı kullanıyorsanız, java'nın -cp parametresini kullanarak sürücü jar yolunu ekleyin.

java -cp C:\lib\* Main

Ya herhangi bir IDE kullanmıyorsak ve sadece terminalimizde çalışıyorsak? O zaman bu problemle nasıl başa çıkılır?
Achyuta Aich

1
Kullanılması -cp, ana sınıf hatası bulunamadı veya yüklenemedi. Main class'ı başka bir klasöre koymam gerekir mi?
zygimantus


8

JDBC API, çoğunlukla herhangi bir veritabanından bağımsız olarak çalışan arayüzlerden oluşur. JDBC API'sini uygulayan her veritabanı için veritabanına özgü bir sürücü gereklidir.

Öncelikle www.mysql.com adresinden MySQL bağlayıcı kavanozunu indirin, ardından:

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

Kitaplıklar sekmesinde tuşuna basın Add External Jarve kavanozunuzu seçin.


3

Maven tabanlı projeler için bir bağımlılığa ihtiyacınız var.

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

2
Neden PostgreSQL? Soru MySQL ile ilgili.
naXa

Cevabı soruyla eşleşecek şekilde
düzenledi

2

Projede Kitaplıklar klasörüne -> sağ tıklayın -> Kitaplık Ekle -> Mysqlconnector 5.1


2

Sürücü konektörü, oluşturma yolunuzda değil. Derleme yolunu yapılandırın ve 'mysql-connector-java-5.1.25-bin.jar'a' işaret edin (kullandığınız sürümü kontrol edin). Alternatif olarak maven'i de kullanabilirsiniz: D


2

IntelliJ Idea için proje yapınıza (Dosya, Proje Yapısı) gidin ve mysql bağlayıcı .jar dosyasını genel kitaplığınıza ekleyin. Oradayken, sağ tıklayın ve 'Modüllere Ekle'yi seçin. Uygula / Tamam'a basın ve gitmeniz iyi olur.


1

Benim durumumda göründüğü gibi önemsiz netbeans versiyonu maven projesi 7.2.1 farklıydı. Projede bağımlılıklar adlı bir klasör var. Sağ tıklayın ve ardından paketleri arayabileceğiniz bir açılır pencere açar. Sorgu alanına koy

mysql-connector

Eşleşmeleri ortaya çıkaracaktır (bunu bazı havuzlara karşı yapıyor gibi görünüyor). Çift tıklayın ve ardından kurun.


1

Bunun nedeni, WEB-INF klasörünün hatadaki alt dizindeki konumda bulunmamasıdır. Ya uygulamayı WEB-INF klasörünü public_html altında kullanmak için derleyin VEYA WEB-INF klasörünü yukarıdaki hatada olduğu gibi alt klasöre kopyalayın.


0

İstisna, sınıf yolunun tanımlanmaması nedeniyle de ortaya çıkabilir.

Saatler süren araştırmalardan ve kelimenin tam anlamıyla yüzlerce sayfadan geçtikten sonra sorun, kütüphanenin sınıf yolunun tanımlanmamış olmasıydı.

Windows makinenizde sınıf yolunu aşağıdaki gibi ayarlayın

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


0

Tomcat kullanıyorsanız, proje diziniyle birlikte veritabanı bağlayıcı jar dosyasını da tomcat / lib'ye kopyalamanız gerekir. bu benim için çalıştı


0

Bunun 2020 itibariyle kullanılması gerekiyor

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

0

Eclipse IDE'de SQLite Veritabanı ile basit bir JavaFX11 uygulaması geliştiriyorum . Rapor oluşturmak için Jasper kavanozları ekledim. Aniden "BU" hatası verir.

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

İyi çalışıyordu (BU EKLENMEDEN ÖNCE). Ama aniden!

Bu basit uygulama için maven veya diğer yöneticileri kullanmıyorum. El ile kavanoz ekliyorum.

"Kullanıcı Kitaplığı" oluşturdum ve kavanozlarımı harici klasörlerden ekledim.

SORUN OLUŞMA ALANI: "Kullanıcı Kitaplığım" sistem kitaplığı olarak işaretlendi. Sadece işareti kaldırdım. Artık bir sistem kitaplığı değil. "ŞİMDİ PROJEM İYİ ÇALIŞIYOR".

DEBUG BENİM: Başka şeyler denedim: YAPILANDIRMAYI ÇALIŞTIRIRKEN: Kitaplığı kaldırmayı deneyin ve kavanozları birer birer ekleyin ve görün. - burada tüm kavanozları tek tek silmeniz gerekir, şu anda çalıştırma konfigürasyonunda tutulmada tümünü seç ve kaldır yoktur. Böylece hata mesajları bir kavanozdan diğerine değişir.

Umarım bu birine yardımcı olur.


0
I was also facing the same problem

Mysql-connector-java'yı indirin kavanoz dosyası

içine yapıştır C:\Program Files\Apache Software Foundation\Tomcat 9.0\lib

Umarım bu sizin için de çalışır !!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.