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 05

убедитесь, что вы выполнили синхронизацию в getInstance ()
Сиддхарт

Возможный дубликат ClassNotFoundException com.mysql.jdbc.Driver
pathikrit

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

Ответы:


124

Кажется, библиотека подключения mysql не включена в проект. Решите проблему, следуя одному из предложенных решений:

  • РЕШЕНИЕ MAVEN PROJECTS

Добавьте зависимость mysql-connector в файл проекта 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-connector в ваши библиотеки и добавить его в свою библиотеку проекта, на которую вы ссылаетесь.

Если вы получаете эту ошибку при запуске, то, вероятно, это потому, что вы не включили файл JAR mysql-connector в папку lib вашего веб-сервера.

Добавьте mysql-connector-java-5.1.25-bin.jarв свой путь к классам, а также в каталог lib вашего веб-сервера. Путь к библиотеке Tomcat приведен в качестве примераTomcat 6.0\lib


1
Что, если мы не используем IDE и просто работаем на нашем терминале? Тогда как бороться с этой проблемой?
Achyuta Aich

если вы не используете IDE, вам следует добавить путь к файлу jar в путь к классам
Asad

2
Здесь важно отметить добавление в серверную
библиотеку

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.

Люди здесь столько раз ответили, что поместили этот файл jar в папку lib WEB-INF. Вроде нормально, но зачем делать это вручную? Есть простой способ. Проверьте следующие шаги:

Шаг 1. Если вы не указали файл jar в проекте, укажите его следующим образом.

Щелкните проект правой кнопкой мыши и перейдите в свойства проекта. Затем перейдите по пути сборки java, затем добавьте через него внешний файл jar.

Но это все равно не решит проблему, потому что добавление внешнего jar-файла через путь сборки помогает только при компиляции классов, и jar не будет развернут при запуске проекта. Для этого выполните этот шаг

Щелкните проект правой кнопкой мыши и перейдите в свойства проекта. Затем перейдите к сборке развертывания, нажмите « Добавить» , затем перейдите к записям пути сборки Java и добавьте свои библиотеки, будь то jstl, mysql или любой другой файл jar. добавить их в развертывание. Ниже приведены два изображения, на которых он показан.

Перед добавлением

После добавления


Спасибо чувак. Это сработало. Почему другие не упомянули об этом, возможно, потому, что это решение только для динамических веб-приложений с использованием Eclipse
Sayka

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

11

Вам нужно будет включить jar-файл драйвера для MySQL Connector Jar в свой путь к классам.

Если вы используете Eclipse: как добавить зависимые библиотеки в Eclipse

Если вы используете командную строку, укажите путь к jar-файлу драйвера с помощью параметра -cp файла java.

java -cp C:\lib\* Main

Что, если мы не используем IDE и просто работаем на нашем терминале? Тогда как бороться с этой проблемой?
Achyuta Aich

1
Использование -cpдает Не удалось найти или загрузить ошибку основного класса. Мне нужно поместить основной класс в другую папку?
zygimantus


8

JDBC API в основном состоит из интерфейсов, которые работают независимо от любой базы данных. Для каждой базы данных, которая реализует JDBC API, требуется специальный драйвер базы данных.

Сначала загрузите jar-файл коннектора 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


2

Разъем драйвера отсутствует в пути сборки. Настройте путь сборки и укажите его на mysql-connector-java-5.1.25-bin.jar (проверьте версию, которую вы используете). В качестве альтернативы вы можете использовать maven: D


2

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


1

Как ни банально это может показаться, в моем случае версия netbeans maven project 7.2.1 была другой. В проекте есть папка dependencies. Щелкните правой кнопкой мыши, а затем появится всплывающее окно, в котором вы можете искать пакеты. В области запроса введите

mysql-connector

Он выведет совпадения (кажется, что это происходит с каким-то репозиторием). Дважды щелкните, затем установите.


1

Это связано с тем, что папка WEB-INF не существует в подкаталоге с ошибкой. Вы либо скомпилируете приложение для использования папки WEB-INF в public_html, либо скопируете папку WEB-INF в подпапку, как в приведенной выше ошибке.


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 или другие менеджеры для этого простого приложения. Я добавляю баночки вручную.

Я создал «Пользовательскую библиотеку» и добавил свои банки из внешних папок.

ОБЛАСТЬ ВОЗНИКНОВЕНИЯ ПРОБЛЕМЫ: Моя «Пользовательская библиотека» помечена как системная. Я просто снял маркировку. Теперь это не системная библиотека. "ТЕПЕРЬ МОЙ ПРОЕКТ РАБОТАЕТ ХОРОШО".

ОТЛАДИТЬ СЕБЯ: Пробовал другие вещи: НА ЗАПУСКНОЙ КОНФИГУРАЦИИ: Попробуйте удалить библиотеку и добавить один за другим и посмотрите. - здесь вам нужно удалить все банки по одному, сейчас в конфигурации запуска нет select all and remove in eclipse. Таким образом, сообщения об ошибках меняются от одной банки к другой.

Надеюсь, это кому-то поможет.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.