java.lang.ClassNotFoundException:Eclipse中的com.mysql.jdbc.Driver


88

代码有什么问题,调试时有很多错误。我正在为单例类编写代码以与数据库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 2013年

确保您已同步getInstance()
Siddharth


1
如果在运行时出现错误,则需要将jar文件粘贴到Web服务器的lib目录中。相反,如果在编译时遇到错误,则在构建路径中添加jar。
djangodude

Answers:


124

似乎mysql连接库未包含在项目中。按照建议的解决方案之一解决问题:

  • 特定项目解决方案

将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 JarSelect您的罐子里。

您可以在这里找到mysql-connector的zip

  • 说明:

生成项目时,java引发异常,因为未找到mysql连接库中的文件(com.mysql.jdbc.Driver类)。解决方案是将库添加到项目中,java将找到com.mysql.jdbc.Driver


7
如果我们不使用任何IDE而是仅在终端上运行怎么办?那么该如何处理呢?
Achyuta Aich 2015年

2
直到您将mysql-connector-java-8.0.15.jar文件添加到apache-tomcat-9.0.16\lib文件夹中(@Asad建议),问题才能得到解决。
SWETA KESUR'3

53

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

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

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


1
如果我们不使用任何IDE而是仅在终端上运行怎么办?那么该如何处理呢?
Achyuta Aich 2015年

如果您未使用任何IDE,则应将jar文件路径添加到类路径
Asad,2015年

2
添加到服务器库中是在此要注意的重要点,谢谢为我工作
Chandra_S 2015年


11

您必须在类路径中包含用于MySQL MySQL Connector Jar的驱动程序jar 。

如果您使用的是Eclipse: 如何在Eclipse中添加依赖库

如果使用命令行,则使用java的-cp参数包括驱动程序jar的路径。

java -cp C:\lib\* Main

如果我们不使用任何IDE而是仅在终端上运行怎么办?那么该如何处理呢?
Achyuta Aich 2015年

1
使用-cp给出无法找到或加载主类错误。我需要将Main class放到另一个文件夹吗?
zygimantus


11

每个人都写了一个答案,但我仍然感到惊讶的是,没有人真正使用最佳的简单方法来回答它。
人们回答包括jar文件。但是,错误仍然会发生。

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

这里的人们回答了很多次,因此将该jar文件放在WEB-INF的lib文件夹中。看起来还可以,但是为什么要手动进行。有简单的方法。检查以下步骤:

步骤1:如果尚未将jar文件引用到项目中,请像这样引用它。

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

但这仍然不能解决问题,因为通过构建路径添加外部jar仅有助于编译类,并且在运行项目时将不会部署jar。为此,请执行此步骤

右键单击项目,然后转到项目属性。然后,转到Deployment Assembly,然后按Add,然后转到java build路径条目并添加您的库,无论它是jstl,mysql还是任何其他jar文件。将它们添加到部署中。下面是显示它的两张图片。

在添加之前

添加后


多谢,伙计。那行得通。为什么其他人没有提到这一点,也许是因为这是仅针对使用Eclipse的动态Web应用程序的解决方案
Sayka

@sayka是的,可能是这样。
塔希尔·侯赛因·米尔

8

JDBC API主要由独立于任何数据库的接口组成。每个实现JDBC API的数据库都需要特定于数据库的驱动程序。

首先从www.mysql.com下载MySQL连接器jar,然后:

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

在库选项卡中,按Add External Jar并选择您的jar。


3

对于基于Maven的项目,您需要一个依赖项。

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

2
为什么选择PostgreSQL?问题是关于MySQL。
naXa 2015年

编辑答案以匹配问题
tomtomssi 2016年

2

在项目中进入文件夹Libraries->右键单击-> Add Library-> Mysqlconnector 5.1


2

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


1

在我的案例中,看似琐碎的netbeans版本的maven项目7.2.1是不同的。项目中有一个名为依赖项的文件夹。右键单击,然后会弹出一个窗口,您可以在其中搜索软件包。在查询区域放

mysql-connector

它将显示匹配项(似乎针对某个存储库执行此操作)。双击然后安装。


1

这是因为错误中子目录中的位置不存在WEB-INF文件夹。您可以编译应用程序以使用public_html下的WEB-INF文件夹,或者像上面的错误一样将WEB-INF文件夹复制到子文件夹中。


1

对于IntelliJ Idea,请转到您的项目结构(文件,项目结构),然后将mysql连接器.jar文件添加到全局库中。到达那里后,右键单击它,然后选择“添加到模块”。点击“应用” /“确定”,您应该一切顺利。


0

由于未定义类路径,也会发生该异常。

经过数小时的研究并经过数百页的研究,问题是未定义库的类路径。

在Windows机器中按如下所示设置类路径

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



0

自2020年起需要使用

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

0

我正在Eclipse IDE中使用SQLite数据库开发一个简单的JavaFX11应用程序。为了生成报告,我添加了Jasper罐子。突然,它引发“此”错误。

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

运行良好(在此之前)。但是突然之间!

我没有为这个简单的应用程序使用maven或其他管理器。我正在手动添加罐子。

我创建了“用户库”,并从外部文件夹添加了我的jar。

问题发生区域: 我的“用户库”被标记为系统库。我刚刚删除了标记。现在它不是系统库。“我的项目现在很好”。

DEBUG MYSELF:尝试过其他事情: 运行配置:尝试删除库并一个接一个地添加jar,然后查看。-在这里,您必须一个一个地删除所有jar,没有全选并在运行配置中立即在eclipse中删除。因此,错误消息从一个罐子变为另一个罐子。

希望这对某人有帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.