【问题标题】:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver in Eclipsejava.lang.ClassNotFoundException:Eclipse 中的 com.mysql.jdbc.Driver
【发布时间】:2023-02-10 22:03:55
【问题描述】:

代码有什么问题,调试时有很多错误。我正在为单例类编写代码以连接数据库 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 的新手。请帮忙。

【问题讨论】:

  • 驱动程序 jar 在您的类路径中吗?
  • 确保您已在 getInstance() 上同步
  • 如果在运行时出现错误,则需要将 jar 文件粘贴到网络服务器的 lib 目录中。然而,如果您在编译时遇到错误,请在构建路径中添加 jar。

标签: java jdbc mysql-connector


【解决方案1】:

看来不包括 mysql 连接库在项目中。按照建议的解决方案之一解决问题:

  • 专家项目解决方案

在 pom.xml 项目文件中添加 mysql-connector 依赖:

<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 TabAdd External JarSelect 你的罐子。

你可以找到 mysql-connector here 的 zip

  • 解释:

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

【讨论】:

  • 如果我们不使用任何 IDE 而只是在我们的终端上运行怎么办?那么如何处理这个问题呢?
  • 按照@Asad 的建议,在将mysql-connector-java-8.0.15.jar 文件添加到apache-tomcat-9.0.16lib 文件夹之前,问题不会得到解决。
【解决方案2】:

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

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

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

【讨论】:

  • 如果我们不使用任何 IDE 而只是在我们的终端上运行怎么办?那么如何处理这个问题呢?
  • 如果你没有使用任何 IDE 那么你应该将 jar 文件路径添加到你的类路径
【解决方案3】:

每个人都写了一个答案,但我仍然很惊讶没有人真正用最简单的方式回答它。
人们回答说包含 jar 文件。但是,错误仍然会发生。

原因是项目运行时jar没有部署。所以,我们需要做的是,告诉 IDE 也部署这个 jar。

这里的人已经回答了很多次了,把那个jar文件放到了WEB-INF的lib文件夹下。这似乎没问题,但为什么要手动执行。有简单的方法。检查以下步骤:

第 1 步:如果您还没有将 jar 文件引用到项目中,请像这样引用它。

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

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

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

【讨论】:

    【解决方案4】:

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

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

    【讨论】:

    • 最终为我工作的是runtime 'mysql:mysql-connector-java:6.0.+'
    【解决方案5】:

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

    如果您使用的是 Eclipse: How to add dependent libraries in Eclipse

    如果您使用的是命令行,请使用 java 的 -cp 参数包含驱动程序 jar 的路径。

    java -cp C:lib* Main
    

    【讨论】:

    • 如果我们不使用任何 IDE 而只是在我们的终端上运行怎么办?那么如何处理这个问题呢?
    • 使用-cp 给出 Could not find or load main class 错误。我需要把主类放到另一个文件夹吗?
    【解决方案6】:

    在类路径download from here 中检查 jar(mysql-connector-java-bin)

    【讨论】:

      【解决方案7】:

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

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

      Right Click the project -- &gt; build path -- &gt; configure build path

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

      【讨论】:

        【解决方案8】:

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

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

        【讨论】:

          【解决方案9】:

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

          【讨论】:

            【解决方案10】:

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

            【讨论】:

              【解决方案11】:

              对于 IntelliJ Idea,转到您的项目结构(文件、项目结构),并将 mysql 连接器 .jar 文件添加到您的全局库。到达那里后,右键单击它并选择“添加到模块”。点击应用/确定,你应该可以开始了。

              【讨论】:

                【解决方案12】:

                这需要从 2021 年起使用

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

                【讨论】:

                  【解决方案13】:

                  在我的例子中,netbeans 版本 maven 项目 7.2.1 可能看起来微不足道。项目中有一个名为 dependencies 的文件夹。右键单击然后弹出一个窗口,您可以在其中搜索包。在查询区放

                  mysql-connector
                  

                  它将调出匹配项(似乎是针对某些存储库执行的)。双击然后安装。

                  【讨论】:

                    【解决方案14】:

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

                    【讨论】:

                      【解决方案15】:

                      由于未定义类路径,也可能发生异常。

                      经过数小时的研究并逐字逐句地浏览了数百页,问题是未定义库的类路径。

                      在您的Windows机器中按如下方式设置类路径

                      set classpath=path	oyourjdbcjarile;.
                      

                      【讨论】:

                        【解决方案16】:

                        我明白你的问题在你的 pom.xml 中添加这个依赖你的问题将得到解决,

                        https://mvnrepository.com/artifact/mysql/mysql-connector-java/5.1.38

                        【讨论】:

                          【解决方案17】:

                          如果您使用的是 tomcat,那么连同项目目录,您还应该将数据库连接器 jar 文件复制到 tomcat/lib。这对我有用

                          【讨论】:

                            【解决方案18】:

                            我正在使用 SQLite 数据库开发一个简单的 JavaFX11 应用程序日蚀集成开发环境.为了生成报告,我添加了 Jasper 罐子。突然它抛出“这”错误。

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

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

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

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

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

                            自我调试:尝试其他事情:运行时配置:尝试删除库并逐个添加 jars 并查看。 - 在这里你必须一个一个地删除所有的罐子,现在在运行配置中没有全选和删除在eclipse中。所以错误消息从一个罐子变成另一个罐子。

                            希望这对某人有帮助。

                            【讨论】:

                              【解决方案19】:
                              I was also facing the same problem
                              

                              下载mysql-连接器-javajar文件

                              粘贴到C:Program FilesApache Software FoundationTomcat 9.0lib

                              希望这对你也有用!!

                              【讨论】:

                                【解决方案20】:

                                最后

                                我通过两个步骤解决了:

                                1 - 将以下内容添加到 pom.xml

                                  <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
                                        <dependency>
                                            <groupId>mysql</groupId>
                                            <artifactId>mysql-connector-java</artifactId>
                                            <version>5.0.8</version>
                                        </dependency>
                                

                                2 - 从这个 URL 下载 jar 文件:https://mvnrepository.com/artifact/mysql/mysql-connector-java/5.0.8 之后将其放入您的tomcat/lib 文件夹中。

                                【讨论】:

                                  【解决方案21】:

                                  我有同样的问题。我正在使用 intellij IDE 创建 MySQL 连接。

                                  修复步骤:

                                  1. 下载:mysql-connector.jar(我用的是8.0.29)。

                                  2. 转到“文件-->项目结构-->库-->单击加号按钮并选择 java 并选择您在步骤 1 中下载的 jar 文件”。

                                  3. 检查 jar 文件是否显示在“外部库目录”下

                                    4. 现在尝试创建连接。它会起作用。

                                    我使用此代码创建 MySQL 连接:

                                    void createConnection() throws SQLException, ClassNotFoundException {
                                        Connection connection=null;
                                        try {
                                    
                                            Class.forName("com.mysql.cj.jdbc.Driver");
                                              connection= DriverManager.getConnection("jdbc:mysql://localhost:3306/candelete"
                                                    ,"root","");
                                            System.out.println("Connection created");
                                            System.out.println("hashcode is: "+connection.hashCode());
                                        }
                                        finally {
                                            System.out.println("here");
                                            System.out.println("hashcode is: "+connection.hashCode());
                                            connection.close();
                                            System.out.println("hashcode now: "+connection.hashCode());
                                        }
                                    }
                                    

                                  【讨论】:

                                    猜你喜欢
                                    • 2014-02-09
                                    • 2018-05-17
                                    • 2018-09-02
                                    • 2021-09-26
                                    • 2011-05-13
                                    • 1970-01-01
                                    • 1970-01-01
                                    • 2013-10-25
                                    相关资源
                                    最近更新 更多