java.lang.ClassNotFoundException: com.mysql.jdbc.Dri ग्रहण में


89

कोड के साथ क्या गलत है डिबगिंग करते समय बहुत सारी त्रुटियां हैं। मैं डेटाबेस mysql से जुड़ने के लिए एक सिंगलटन क्लास के लिए एक कोड लिख रहा हूं।

यहाँ मेरा कोड है

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

मैं जावा में नया हूँ। कृपया मदद करे।


2
क्या ड्राइवर आपके वर्गपथ में जार है?
NINCOMPOOP

सुनिश्चित करें कि आपने अपने getInstance ()
सिद्धार्थ


1
यदि आप रनटाइम में त्रुटि प्राप्त कर रहे हैं तो आपको जार फाइल को अपने वेबसर्वर की निर्देशिका में पेस्ट करना होगा। जबकि, अगर आपको कंपाइल टाइम पर एरर मिल रहा है तो बिल्ड पाथ में जार जोड़ें।
djangodude

जवाबों:


124

ऐसा लगता है कि mysql कनेक्टिविटी लाइब्रेरी परियोजना में शामिल नहीं है । प्रस्तावित समाधानों में से किसी एक समस्या का समाधान करें:

  • MAVEN परियोजनाओं समाधान

Mysql-कनेक्टर निर्भरता को pom.xml प्रोजेक्ट फ़ाइल में जोड़ें:

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

यहाँ आप सभी संस्करण हैं: https://mvnrepository.com/artifact/mysql/mysql-connor-vava

  • सभी परियोजनाओं का समाधान

प्रोजेक्ट में मैन्युअल रूप से जार लाइब्रेरी जोड़ें।

राइट-क्लिक करें प्रोजेक्ट -> बिल्ड पथ -> कॉन्फ़िगर बिल्ड पथ

में Libraries Tab प्रेस Add External Jar और Selectअपने जार।

आप यहाँ mysql-कनेक्टर के लिए ज़िप पा सकते हैं

  • स्पष्टीकरण:

प्रोजेक्ट बनाते समय, java आपको एक अपवाद के रूप में फेंक देता है क्योंकि mysql कनेक्टिविटी लाइब्रेरी से एक फ़ाइल (com.mysql.jdbc.Driver वर्ग) नहीं मिली है। समाधान परियोजना में पुस्तकालय को जोड़ रहा है, और जावा को com.mysql.jdbc.Driver मिलेगा


7
क्या होगा अगर हम किसी भी आईडीई का उपयोग नहीं कर रहे हैं और बस हमारे टर्मिनल पर चल रहे हैं? फिर इस समस्या से कैसे निपटें?
अच्युता आइच

2
जब तक आप @Aadad द्वारा सुझाए गए फ़ोल्डर mysql-connector-java-8.0.15.jarमें फ़ाइल नहीं जोड़ेंगे apache-tomcat-9.0.16\lib, समस्या हल नहीं होगी ।
स्वेता केसुर

53

यदि आपको अपनी IDE (संकलन-समय त्रुटि) में त्रुटि मिली है, तो आपको अपने mysql-कनेक्टर जार फ़ाइल को अपने कामों में जोड़ने की जरूरत है और इसे अपने प्रोजेक्ट के संदर्भित पुस्तकालय में भी जोड़ें।

यदि आपको यह त्रुटि तब आती है जब आप इसे चला रहे होते हैं, तो शायद इसकी वजह यह है कि आपने mysql-कनेक्टर JAR फ़ाइल को अपने वेबसर्वर के लिबास फ़ोल्डर में शामिल नहीं किया है।

mysql-connector-java-5.1.25-bin.jarअपने सहपाठी में जोड़ें और अपने वेबसर्वर के लिए भी काम करें। एक उदाहरण के रूप में टॉमकैट लिब्रेट पथ दिया गया हैTomcat 6.0\lib


1
क्या होगा अगर हम किसी भी आईडीई का उपयोग नहीं कर रहे हैं और बस हमारे टर्मिनल पर चल रहे हैं? फिर इस समस्या से कैसे निपटें?
अच्युता आइच

यदि आप किसी आईडीई का उपयोग नहीं कर रहे हैं, तो आपको अपने क्लासपथ में जार फ़ाइल पथ जोड़ना चाहिए
असद

2
सर्वर लिब में जोड़ना यहाँ ध्यान देने योग्य है, धन्यवाद मेरे लिए काम किया
चंद्र_स


12

हर एक ने एक उत्तर लिखा है लेकिन मुझे अभी भी आश्चर्य है कि किसी ने वास्तव में सबसे सरल तरीके से इसका जवाब नहीं दिया।
लोग जवाब देते हैं कि जार फ़ाइल शामिल है। लेकिन, त्रुटि अभी भी होगी।

इसका कारण यह है कि, जब परियोजना चलाई जाती है तो जार को तैनात नहीं किया जाता है। तो, हमें क्या करने की आवश्यकता है, इस जार को तैनात करने के लिए आईडीई को भी बताएं।

यहाँ के लोगों ने कई बार उत्तर दिया है कि उस जार फ़ाइल को WEB-INF के आवश्यक फ़ोल्डर में डालें। यह ठीक लगता है, लेकिन इसे मैन्युअल रूप से क्यों करें। सरल तरीका है। नीचे दिए गए चरणों की जाँच करें:

चरण 1: यदि आपने प्रोजेक्ट में जार फ़ाइल को संदर्भित नहीं किया है, तो इसे इस तरह से देखें।

प्रोजेक्ट पर राइट क्लिक करें और प्रोजेक्ट प्रॉपर्टीज पर जाएँ। फिर, जावा बिल्ड पथ पर जाएं, फिर उसके माध्यम से बाहरी जार फ़ाइल जोड़ें।

लेकिन यह अभी भी समस्या को हल नहीं करेगा क्योंकि बाहरी जार को बिल्ड पथ के माध्यम से जोड़ने से केवल कक्षाओं को संकलित करने में मदद मिलती है, और जब आप प्रोजेक्ट चलाते हैं तो जार को तैनात नहीं किया जाएगा। उसके लिए इस स्टेप को फॉलो करें

प्रोजेक्ट पर राइट क्लिक करें और प्रोजेक्ट प्रॉपर्टीज पर जाएँ। फिर, परिनियोजन असेंबली पर जाएँ और फिर ऐड दबाएं , फिर जावा बिल्ड पाथ एंट्रीज़ पर जाएँ और अपनी लाइब्रेरियाँ जोड़ें चाहे वह jstl, mysql या कोई अन्य jar फ़ाइल हो। उन्हें तैनाती में शामिल करें। नीचे दो चित्र हैं जो इसे प्रदर्शित करते हैं।

जोड़ने से पहले

जोड़ने के बाद


धन्यवाद दोस्त। वह काम किया। दूसरों ने इसका उल्लेख शायद इसलिए नहीं किया क्योंकि यह केवल ग्रहण के प्रयोग से डायनेमिक वेब एप्लिकेशन के लिए एक समाधान है
Sayka

@ sayka हाँ, यह मामला हो सकता है।
ताहिर हुसैन मीर

11

आपको अपने वर्गपथ में MySQL MySQL कनेक्टर जार के लिए ड्राइवर जार शामिल करना होगा ।

यदि आप ग्रहण का उपयोग कर रहे हैं: ग्रहण में आश्रित पुस्तकालयों को कैसे जोड़ा जाए

यदि आप कमांड लाइन का उपयोग कर रहे हैं तो जावा के -cp पैरामीटर का उपयोग करके ड्राइवर जार में पथ शामिल करें।

java -cp C:\lib\* Main

क्या होगा अगर हम किसी भी आईडीई का उपयोग नहीं कर रहे हैं और बस हमारे टर्मिनल पर चल रहे हैं? फिर इस समस्या से कैसे निपटें?
अच्युता आइच

1
-cpमुख्य वर्ग त्रुटि का पता लगाने या लोड करने का उपयोग नहीं कर सका। क्या मुझे मुख्य वर्ग को किसी अन्य फ़ोल्डर में रखने की आवश्यकता है?
जिगिमंटस


8

JDBC API में ज्यादातर ऐसे इंटरफेस होते हैं जो किसी भी डेटाबेस से स्वतंत्र रूप से काम करते हैं। प्रत्येक डेटाबेस के लिए एक डेटाबेस विशिष्ट ड्राइवर की आवश्यकता होती है जो JDBC API को लागू करता है।

पहले www.mysql.com से MySQL कनेक्टर जार डाउनलोड करें, फिर:

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

पुस्तकालयों में टैब दबाएँ Add External Jarऔर अपना जार चुनें।


3

मावेन आधारित परियोजनाओं के लिए आपको एक निर्भरता की आवश्यकता होती है।

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

2
क्यों PostgreSQL? सवाल MySQL के बारे में है।
naXa

प्रश्न का मिलान करने के उत्तर का संपादन किया
tomtomssi

2

फ़ोल्डर में प्रोजेक्ट में लाइब्रेरीज़ -> राइट क्लिक -> लाइब्रेरी जोड़ें -> मैसकल्कन सेक्टर 5.1


2

ड्राइवर कनेक्टर आपके बिल्ड पथ में नहीं है। बिल्ड पथ कॉन्फ़िगर करें और इसे 'mysql-कनेक्टर-जावा-5.1.25-bin.jar' पर इंगित करें (जिस संस्करण का आप उपयोग कर रहे हैं उसे जांचें)। वैकल्पिक रूप से आप मावेन का उपयोग कर सकते हैं: डी


1

यह मेरे मामले netbeans संस्करण मावेन परियोजना 7.2.1 में अलग लग सकता है के रूप में तुच्छ था। परियोजना में एक फ़ोल्डर है जिसे निर्भरता कहा जाता है। राइट क्लिक करें और फिर यह एक पॉपअप विंडो लाता है जहाँ आप पैकेज खोज सकते हैं। क्वेरी क्षेत्र में डाल दिया

mysql-connector

यह मैचों को लाएगा (ऐसा लगता है कि यह कुछ भंडार के खिलाफ ऐसा करता है)। डबल क्लिक करें फिर स्थापित करें।


1

यह इसलिए है क्योंकि WEB-INF फ़ोल्डर त्रुटि में उप निर्देशिका में स्थान पर मौजूद नहीं है। आप या तो public_html के तहत WEB-INF फ़ोल्डर का उपयोग करने के लिए एप्लिकेशन को संकलित करते हैं या उप फ़ोल्डर में WEB-INF फ़ोल्डर को कॉपी करें जैसा कि ऊपर की त्रुटि में है।


1

इंटेलीज आइडिया के लिए, अपने प्रोजेक्ट स्ट्रक्चर (फाइल, प्रोजेक्ट स्ट्रक्चर) पर जाएं, और mysql कनेक्टर .jar फ़ाइल को अपने ग्लोबल लाइब्रेरी में जोड़ें। एक बार, वहाँ पर राइट क्लिक करें और 'मॉड्यूल में जोड़ें' को चुना। हिट लागू / ठीक है और आप जाने के लिए अच्छा होना चाहिए।


0

वर्ग पथ परिभाषित नहीं होने के कारण अपवाद भी हो सकता है।

घंटों के अनुसंधान और सचमुच सैकड़ों पृष्ठों से गुजरने के बाद, समस्या यह थी कि पुस्तकालय के वर्ग पथ को परिभाषित नहीं किया गया था।

अपनी विंडो मशीन में निम्नानुसार वर्ग पथ सेट करें

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


0

यदि आप tomcat का उपयोग कर रहे हैं, तो प्रोजेक्ट डायरेक्टरी के साथ-साथ आपको डेटाबेस कनेक्टर jar फाइल को भी tomcat / lib में कॉपी करना चाहिए। यह मेरे लिए काम किया


0

इसे 2020 तक उपयोग करने की आवश्यकता है

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

0

मैं ग्रहण आईडीई में SQLite डेटाबेस के साथ एक सरल JavaFX11 एप्लिकेशन विकसित कर रहा हूं । रिपोर्ट उत्पन्न करने के लिए मैंने जैस्पर जार जोड़ा। अचानक यह "THIS" त्रुटि फेंकता है ।

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

यह अच्छा चल रहा था (इस संस्करण से पहले)। लेकिन अचानक!

मैं इस सरल अनुप्रयोग के लिए मावेन या अन्य प्रबंधकों का उपयोग नहीं कर रहा हूं। मैं मैन्युअल रूप से जार जोड़ रहा हूं।

मैंने "उपयोगकर्ता लाइब्रेरी" बनाई और बाहरी फ़ोल्डरों से अपने जार जोड़े।

समस्या का निराकरण क्षेत्र: मेरी "उपयोगकर्ता लाइब्रेरी" को सिस्टम लाइब्रेरी के रूप में चिह्नित किया गया है। मैंने बस मार्किंग को हटा दिया। अब इसका सिस्टम लाइब्रेरी नहीं है। "अब मेरा काम अच्छा काम कर रहा है"।

DEBUG MYSELF: अन्य चीजों की कोशिश की: करें, पुस्तकालय को हटाने और एक-एक करके जार जोड़ें और देखें। - यहां आपको एक-एक करके सभी जार को डिलीट करना है, कोई भी सलेक्ट नहीं है और रन कॉन्फ़िगरेशन में अभी एक्लिप्स हटा दें। इसलिए त्रुटि संदेश परिवर्तन एक जार से दूसरे में जाते हैं।

आशा है कि यह किसी की मदद करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.