java.lang.ClassNotFoundException:com.mysql.jdbc.Driver MySQLConnector/J

116
代码有什么问题,在调试过程中出现了很多错误。我正在编写一个用于连接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还不熟悉。请帮助。


3
你的类路径中是否包含驱动程序jar文件? - AllTooSir
请确保在调用getInstance()方法时进行了同步。 - Siddharth
可能是 ClassNotFoundException com.mysql.jdbc.Driver 的重复问题。 - pathikrit
1
如果您在运行时遇到错误,则需要将jar文件粘贴到Web服务器的lib目录中。而如果您在编译时遇到错误,则需要将jar文件添加到构建路径中。 - codingbruh
22个回答

152

看起来该项目中未包含mysql连接库。按照以下建议之一解决此问题:

  • MAVEN项目方案

将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并且选择您的jar文件。

您可以在此处找到mysql-connector的zip文件。

  • 说明:

在构建项目时,Java会抛出异常,因为来自mysql连接库的文件(com.mysql.jdbc.Driver类)未找到。 解决方案是将库添加到项目中,然后Java会找到com.mysql.jdbc.Driver 。


10
如果我们没有使用任何IDE,只是在终端上运行代码,那该怎么处理这个问题呢? - Achyuta Aich
2
问题不会得到解决,直到您按照@Asad的建议将mysql-connector-java-8.0.15.jar文件添加到apache-tomcat-9.0.16\lib文件夹中。 - SWETA KESUR

57

如果您在IDE(编译时)中遇到了错误,您需要将mysql-connector jar文件添加到libs中,并将其添加到项目的引用库中。

如果您在运行时遇到此错误,则可能是因为您未将mysql-connector JAR文件包含到Web服务器的lib文件夹中。

mysql-connector-java-5.1.25-bin.jar添加到类路径和Web服务器的lib目录中。 以Tomcat lib路径为例:Tomcat 6.0\lib


1
如果我们没有使用任何集成开发环境,只是在终端上运行代码,那么该如何处理这个问题呢? - Achyuta Aich
如果您没有使用任何IDE,则应将jar文件路径添加到您的类路径中。 - Asad

27

虽然有很多人回答了这个问题,但我仍然惊讶于没有人用最简单的方式回答。
其他人回答需要包含JAR文件。但是,错误仍然会发生。

原因是项目运行时未部署JAR文件。因此,我们需要做的就是告诉IDE也要部署这个JAR文件。

这里的人们已经回答了很多次,将该JAR文件放入WEB-INF的lib文件夹中。这似乎没问题,但为什么要手动操作呢?以下是简单的方法:

步骤1:如果您尚未将JAR文件引用到项目中,请按照以下方式进行引用。

右键单击项目,转到项目属性。 然后,进入java构建路径,通过它添加外部jar文件。

但这仍然无法解决问题,因为通过构建路径添加外部jar只有在编译类时有帮助,在运行项目时不会部署该jar。 因此,请按照以下步骤操作

右键单击项目并转到项目属性。 然后,进入部署程序集,然后点击添加,接下来进入java构建路径条目并将您的库添加到部署中,无论是jstl、mysql还是任何其他jar文件。下面是两张显示的图片。

添加前

添加后


15

对于基于 Gradle 的项目,您需要依赖 MySQL Java Connector

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

对我最终起作用的是 runtime 'mysql:mysql-connector-java:6.0.+' - itsmichaelwang

14

如果我们没有使用任何集成开发环境,只是在终端上运行,那么该怎么处理这个问题呢? - Achyuta Aich
1
使用 -cp 会出现找不到或加载主类错误。我需要将主类放到另一个文件夹中吗? - zygimantus

13

检查您的类路径中是否有(mysql-connector-java-bin)这个jar包,从这里下载


9
JDBC API主要由独立于任何数据库的接口组成。每个实现JDBC API的数据库都需要一个特定于该数据库的驱动程序。
首先从www.mysql.com下载MySQL连接器jar包,然后:
右键单击项目-->构建路径-->配置构建路径
在库选项卡中按添加外部Jar并选择您的jar。

5
对于基于Maven的项目,您需要具备依赖项。
<dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.38</version>
</dependency>

3

驱动连接器不在您的构建路径中。配置构建路径并将其指向“mysql-connector-java-5.1.25-bin.jar”(请检查您使用的版本)。或者,您可以使用Maven:D


2

对于IntelliJ Idea,请进入您的项目结构(文件,项目结构),并将mysql连接器.jar文件添加到全局库中。一旦在那里,请右键单击它,选择“添加到模块”。点击应用/确定,您就可以开始了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接