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


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

Я новачок у Java. Будь ласка, допоможіть.


2
Jar драйвера у вашому класі?
NINCOMPOOP

переконайтеся, що ви синхронізували свій getInstance ()
Сіддхарт

Можливий дублікат ClassNotFoundException com.mysql.jdbc.Driver
pathikrit

1
Вам потрібно вставити файл jar у каталог бібліотеки вашого веб-сервера, якщо ви отримуєте помилку під час виконання. тоді як, якщо ви отримуєте помилку під час компіляції, додайте jar у шлях побудови.
djangodude

Відповіді:


124

Здається, бібліотека підключення mysql не включена в проект. Розв’яжіть задачу за одним із запропонованих рішень:

  • ВИРІШЕННЯ ПРОЕКТІВ "МАВЕН"

Додайте залежність mysql-з'єднувач у файл проекту pom.xml:

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

Ось усі версії: https://mvnrepository.com/artifact/mysql/mysql-connector-java

  • ВСІ ВИРІШЕННЯ ПРОЕКТІВ

Додайте бібліотеку jar вручну до проекту.

Клацніть правою кнопкою миші проект -> шлях побудови -> налаштуйте шлях побудови

У Libraries Tab пресі Add External Jar і Selectваша банка.

Ви можете знайти zip для mysql-конектора тут

  • Пояснення:

При побудові проекту java видає вам виняток, оскільки файл (клас com.mysql.jdbc.Driver) з бібліотеки підключення mysql не знайдений. Рішенням є додавання бібліотеки до проекту, і java знайде com.mysql.jdbc.Driver


7
Що робити, якщо ми не використовуємо жодну IDE і просто працюємо на нашому терміналі? Тоді як боротися з цією проблемою?
Achyuta Aich

2
Проблема не вирішиться, доки ви не додасте mysql-connector-java-8.0.15.jarфайл до apache-tomcat-9.0.16\libпапки, як запропонував @Asad.
SWETA KESUR

53

Якщо ви отримали помилку в IDE (помилка під час компіляції), вам потрібно додати свій файл jar mysql-з'єднувач до ваших бібліотек і додати це також у свою бібліотеку проекту, на яку посилаються.

Якщо ви отримуєте цю помилку під час її запуску, можливо, це тому, що ви не включили файл JAR mysql-з'єднувач до папки lib вашого веб-сервера.

Додайте mysql-connector-java-5.1.25-bin.jarдо шляху до класу, а також до каталогу бібліотеки веб-сервера. Як приклад наведено шлях до бібліотеки TomcatTomcat 6.0\lib


1
Що робити, якщо ми не використовуємо жодну IDE і просто працюємо на нашому терміналі? Тоді як боротися з цією проблемою?
Achyuta Aich

якщо ви не використовуєте жодну IDE, вам слід додати шлях до файлу jar до шляху до вашого класу
Асад

2
Додавання до серверної бібліотеки - це важливий момент, на який слід звернути увагу, подяка спрацювала для мене
Chandra_S

14

Для проектів на основі Gradle вам потрібна залежність від MySQL Java Connector :

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

Що в підсумку працювало для мене runtime 'mysql:mysql-connector-java:6.0.+'.
itsmichaelwang

12

Кожен написав відповідь, але я все ще здивований, що насправді ніхто не відповів на нього найкращим простим способом.
Люди відповідають, що містять файл jar. Але помилка все-таки відбудеться.

Причиною цього є те, що jar не розгортається під час запуску проекту. Отже, що нам потрібно зробити, це сказати IDE також розгорнути цю банку.

Люди тут відповіли стільки разів, що помістили цей файл jar у папку lib WEB-INF. Це здається нормально, але навіщо це робити вручну. Є простий спосіб. Перевірте наступні кроки:

Крок 1: Якщо ви не посилалися на файл jar у проект, тоді посилайтеся на нього так.

Клацніть правою кнопкою миші на проекті та перейдіть до властивостей проекту. Потім перейдіть до шляху побудови Java, а потім додайте зовнішній файл jar за допомогою цього.

Але це все одно не вирішить проблему, оскільки додавання зовнішнього jar через шлях побудови допомагає лише у компіляції класів, і jar не буде розгорнуто під час запуску проекту. Для цього виконайте цей крок

Клацніть правою кнопкою миші на проекті та перейдіть до властивостей проекту. Потім перейдіть до Асамблеї розгортання, потім натисніть Додати , а потім перейдіть до записів шляху побудови Java і додайте свої бібліотеки, будь то jstl, mysql або будь-який інший файл jar. додати їх до розгортання. Нижче наведені дві картинки, які його відображають.

Перед додаванням

Після додавання


Дякую, чувак. Це спрацювало. Чому інші не згадали про це, можливо, тому, що це рішення лише для динамічної веб-програми, що використовує Eclipse
Сайка,

@sayka так, це може бути так.
Тахір Хуссейн Мір

11

Вам доведеться включити jar-драйвер для MySQL MySQL Connector Jar у свій шлях до класу.

Якщо ви використовуєте Eclipse: Як додати залежні бібліотеки в Eclipse

Якщо ви використовуєте командний рядок, додайте шлях до jar драйвера, використовуючи параметр -cp Java.

java -cp C:\lib\* Main

Що робити, якщо ми не використовуємо жодну IDE і просто працюємо на нашому терміналі? Тоді як боротися з цією проблемою?
Achyuta Aich

1
Використання -cpдає Не вдається знайти або завантажити помилку основного класу. Чи потрібно класти Main class в іншу папку?
zygimantus


8

JDBC API здебільшого складається з інтерфейсів, які працюють незалежно від будь-якої бази даних. Для кожної бази даних, яка реалізує API JDBC, потрібен драйвер, що відповідає базі даних.

Спочатку завантажте банку роз’єму MySQL з www.mysql.com, а потім:

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

На вкладці "Бібліотеки" натисніть Add External Jarі виберіть свою банку.


3

Для проектів на основі Maven вам потрібна залежність.

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

2
Чому саме PostgreSQL? Питання про MySQL.
naXa

Відповідь відредаговано відповідно до запитання
tomtomssi 02.03.2016

2

У проекті в папку Бібліотеки -> клацніть правою кнопкою миші -> Додати бібліотеку -> Mysqlconnector 5.1


2

З'єднувач драйвера не у вашому шляху збірки. Налаштуйте шлях збірки та вкажіть його на 'mysql-connector-java-5.1.25-bin.jar' (перевірте версію, яку ви використовуєте). В якості альтернативи ви можете використовувати maven: D


1

Як би це не здавалося дріб’язково, у моєму випадку версія netbeans maven project 7.2.1 була іншою. У проекті є папка, яка називається залежностями. Клацніть правою кнопкою миші, після чого відкриється спливаюче вікно, де ви можете шукати пакунки. В області запиту поставте

mysql-connector

Це покаже збіги (здається, це робиться проти якогось сховища). Двічі клацніть, а потім встановіть.


1

Це тому, що папка WEB-INF не існує в розташуванні в підкаталозі помилки. Ви або скомпілюєте програму, щоб використовувати папку WEB-INF під public_html АБО скопіювати папку WEB-INF у підпапку, як у помилці вище.


1

Для IntelliJ Idea перейдіть до структури проекту (Файл, Структура проекту) та додайте файл .jar конектора mysql до вашої глобальної бібліотеки. Опинившись, клацніть правою кнопкою миші та виберіть «Додати до модулів». Натисніть Застосувати / ОК, і ви повинні бути готові піти.


0

Виняток може також статися через не визначений шлях до класу.

Після годин досліджень і буквального перегляду сотень сторінок проблема полягала в тому, що класний шлях бібліотеки не був визначений.

Встановіть шлях до класу наступним чином у вашому комп'ютері Windows

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

Я розробляю простий додаток JavaFX11 із базою даних SQLite в Eclipse IDE . Для створення звіту я додав банки Jasper. Раптом він видає помилку "ЦЕ" .

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

Він працював добре (ДО ЦЬОГО ДОДАТКУ). Але раптом!

Я не використовую maven та інших менеджерів для цього простого додатку. Я додаю банки вручну.

Я створив "Бібліотеку користувачів" і додав банки із зовнішніх папок.

ПРОБЛЕМА, ЩО НАСТУПАЄ: Моя "Бібліотека користувачів" позначена як системна бібліотека. Я просто зняв маркування. Зараз це не системна бібліотека. "ЗАРАЗ МОЙ ПРОЕКТ РОБОЧО РОБОЧИЙ".

ДЕБУГ: Я пробував інші речі: НА РАБОТІ КОНФІГУРАЦІЇ: Спробуйте, вилучивши бібліотеку, додайте банки по одному і подивіться. - тут вам потрібно видалити всі банки по одному, немає виділення всіх та видалення в eclipse прямо зараз у конфігурації запуску. Тож повідомлення про помилки змінюються з одного банку в інший.

Сподіваюся, це комусь допомагає.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.