【问题标题】:ClassNotFoundException com.mysql.jdbc.Driver [duplicate]ClassNotFoundException com.mysql.jdbc.Driver [重复]
【发布时间】:2010-12-07 20:00:44
【问题描述】:

这个问题可能已经在这里问过很多次了。在对上述错误进行了一些谷歌搜索并进行了一些更新之后,我不明白为什么我仍然会收到该错误。我已经将我的驱动程序——mysql-connector-java-5.1.5-bin 放在了类路径中:

Java_Home\jre\lib\
Java_Home\jre\lib\ext\
Java_Home\lib

我用来连接mysql数据库的代码是:

try{
Class.forName("com.mysql.jdbc.Driver");

Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/mail","root","");

Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select message_body from deadletter");
String dbtime;
while (rs.next()) {
dbtime = rs.getString(1);
System.out.println(dbtime);
} 

con.close();

}
catch (SQLException e) {
        System.out.println("Connection Failed! Check output console");
        e.printStackTrace();
        }

    }

上述异常的完整堆栈跟踪是:

java.lang.ClassNotFoundException: com.mysql.jdbc:Driver
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:307)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    at java.lang.Class.forName0(Native Method)  
    at java.lang.Class.forName(Class.java:169)
    at mail.main(mail.java:114)  

现在,我在这里做错了什么?

【问题讨论】:

  • 那么,你的类路径到底是什么样的呢?您必须将 JAR 文件 (mysql-connector-java-5.1.5-bin.jar) 放在类路径中。
  • 异常消息的类名中有一个冒号,我认为这不应该发生。
  • Class.forName() 行自 2007 年的 JDBC 4 以来已经过时,无论 MySQL 连接器首先实现了它。
  • 在 Spring Boot 项目中遇到此问题,并通过将其包含在 Gradle 依赖项块中来解决:runtime('mysql:mysql-connector-java')

标签: java exception jdbc


【解决方案1】:

最常见的原因是您在加载类的位置上有一些冲突。例如,如果您有 2 个位置,一个有 JDBC 驱动程序,而另一个没有,那么如果您的类加载器从第一个位置加载并且第一个位置的某个类想要使用驱动程序 - 驱动程序不存在。因此,请查找使用您的驱动程序的重复 JAR

【讨论】:

【解决方案2】:

我将 mysql-connector jar 保存在我的项目中,而不是 Javahome 中。因此,您可以通过确定它在本地类路径中来确定它可以被找到。一个很大的好处是您可以将项目更多地转移到另一台机器上,而不必担心(或忘记)再次设置它。我个人喜欢将它包含在版本控制中。

【讨论】:

    【解决方案3】:

    您在libjre/libjre/lib/ext 中究竟输入了什么?是 jar mysql-connector-java-5.1.5-bin.jar 还是其他东西(比如目录)?

    顺便说一句,我不会把它放在libjre/libjre/lib/ext中,还有其他方法可以将jar添加到类路径中。您可以通过显式添加 CLASSPATH 环境变量来做到这一点。或者您可以使用java-cp 选项。但这是另一回事了。

    【讨论】:

      【解决方案4】:

      我也有同样的问题 但经过长时间的搜索,我发现了这个: http://www.herongyang.com/JDBC/MySQL-JDBC-Driver-Load-Class.html

      但我做了一些改变。我将驱动程序放在与我的ConTest.java 文件相同的文件夹中, 并编译它,得到ConTest.class

      所以在这个文件夹里有

      ConTest.class
      mysql-connector-java-5.1.14-bin.jar
      

      我写这个

      java -cp .;mysql-connector-java-5.1.14-bin.jar ConTest
      

      这种方式如果你不使用任何 IDE 只是 windows 中的 cmd 或 linux 中的 shell。

      【讨论】:

      • 对于 linux,您必须替换 ' ; ' 与 ' : '
      • 为我工作!非常感谢你们,你们拯救了我的周末!
      • 你确定这行得通吗?它给出了术语 mysql-connector-java-5.1.14-bin.jar 不被识别为 cmdlet 的名称。
      【解决方案5】:

      我也遇到过同样的问题,终于找到了解决方案。 只需将MySql-Connector.jar 复制到Tomcat 的lib 文件夹中,然后从webapp 的lib 文件夹中删除jar,然后运行该项目。

      【讨论】:

      • 这行得通。然而,我猜这不是一个好的解决方案。你能建议一个更正式的方式吗
      • 如果您使用任何 IDE,则“服务器清理”将执行此任务。如果您不使用 IDE,则必须手动执行此操作。
      • 像魅力一样工作!
      【解决方案6】:

      好的,我找到了将 mysql-conector-java.jar 的路径更改为以下路径的解决方案:

      ProjectName/WebContent/Web-inf/lib/mysql-conector-java.jar 
      

      所以你需要再次将连接器添加到项目中并删除之前的连接器。

      【讨论】:

        【解决方案7】:

        好的..也许我也可以贡献我的解决方案.. 右键单击项目 -properties --> 部署程序集...您需要添加 mysql-connector-java.jar 并应用它...这使您的项目配置有具有此 sql 连接器的 web-Libraries...这对我有用.. 我希望这对你们也有用

        【讨论】:

          【解决方案8】:

          注意Class的论点。 forName 方法正是“com.mysql.jdbc.Driver”。 如果是,请确保项目的 lib 文件夹中存在 mysql 连接器。如果是,那么请注意相同的 mysql 连接器。 jar 文件在 ClassPath 变量(系统变量)中..

          【讨论】:

          • 无空格:"com.mysql.jdbc.Driver"
          【解决方案9】:

          唯一对我有用的是直接从 MySQL 网站下载 mysql-connector-java-5.0.8-bin.jar

          http://dev.mysql.com/downloads/connector/j/3.1.html

          如果您使用的是 Eclipse,请将此 mysql-connector-java-5.0.8-bin.jar 粘贴到 WEB-INF lib 文件夹中

          如果不起作用,请尝试使用此链接中发布的任何解决方案: http://javarevisited.blogspot.com/2012/03/jdbc-javalangclassnotfoundexception.html

          【讨论】:

            【解决方案10】:

            如果您在使用 Eclipse 时遇到此问题,我一直在遵循许多不同的解决方案,但对我有用的是:

            1. 右键单击您的项目文件夹并打开属性。

            2. 从右侧面板中,选择 Java Build Path,然后转到 Libraries 选项卡。

            3. 选择添加外部 JAR 以导入 mysql 驱动程序。

            4. 从右侧面板中,选择部署程序集。

            5. 选择 Add...,然后选择 Java Build Path Entries 并单击 Next。

            6. 您应该会在列表中看到 sql 驱动程序。选择它并首先单击。

            就是这样!尝试再次运行它!干杯!

            【讨论】:

            • 你拯救了我的一天(实际上是一个星期!)。在互联网上的所有解决方案中,这是我需要的一个。奇怪的日食方式:->
            • 非常感谢!我在这个问题上挣扎了两个多小时,这就是问题的解决方案。由衷的感谢!
            • 这也是对我有用的解决方案。具体来说,步骤 4-6 是解决我面临的数据库连接问题的附加步骤。
            • 哇。不敢相信,2.5 年后,我的解决方案仍然对你们有用。代码!
            【解决方案11】:

            在 NetBeans 中,

            1. 右键单击库,选择properties
            2. 选择rub标签
            3. 您需要在此处添加mysql-connector-java.jar 并申请

            【讨论】:

              【解决方案12】:

              上面已经介绍了大部分可能的解决方案。根据我对这个问题的经验,我已将 mysql-connector-jar 放在 webapp 模块的 /WEB-INF/lib 文件夹中,它对我来说效果很好。

              【讨论】:

              • 希望我能给你无限的支持
              【解决方案13】:

              将我的 java 升级到 1.8.0_101 后,我遇到了同样的错误。尝试这个: 一世。从您的构建路径中删除 mysql.jar。 ii.清理服务器和项目 iii.将 jar 文件添加回构建路径。

              为我工作。

              【讨论】:

                【解决方案14】:

                只需复制 MySQL JDBC 驱动 jar 文件并将其粘贴到 Tomcat 或任何服务器的 lib 文件夹中。它对我有用。

                【讨论】:

                  【解决方案15】:

                  1) 从这里下载连接器https://www.mysql.com/products/connector/

                  2) 为mysql选择JDBC驱动

                  3)点击平台无关(Architecture Independent),ZIP存档

                  4) 下载文件并解压

                  5) (对于 Eclipse)点击 Project->properties-> Java Build Path->Libraries (对于 Netbeans)右键单击左侧栏上的库->添加 jar

                  6) 点击添加外部jar

                  7) 选择mysql-connector-java-5.1.40-bin.jar

                  8) 完成!

                  【讨论】:

                    【解决方案16】:

                    如果您使用的是 NetBeans,请按照以下步骤操作:

                    1. 右键单击“库”并选择“添加库..”
                    2. 向下滚动“全局库”列表并选择“MySQL JDBC 驱动程序”并单击“添加库”。

                    【讨论】:

                      【解决方案17】:

                      这个答案是给eclipse用户的......

                      首先你检查 jdbc jar 文件是否添加到 Ear 库中......

                      如果是...那么 check...in web Content->web Inf 文件夹->lib

                      然后将 jdbc jar 文件放在 lib 文件夹中.....

                      【讨论】:

                      • 在 2020 年解决了我的问题 :=)...谢谢..
                      【解决方案18】:

                      你应该下载MariaDB connector
                      那么:

                      1. 扩展您的项目。
                      2. 右键单击Libraries
                      3. 选择Add Jar/Folder
                      4. 添加刚刚下载的mariadb-java-client-2.0.2.jar

                      【讨论】:

                        【解决方案19】:

                        在netbean中 右键单击您的项目,然后单击库,然后单击运行选项卡,添加库,然后选择 mysql 连接器

                        【讨论】:

                          【解决方案20】:

                          只需将 mysqlconnector jar 复制并粘贴到您的项目文件夹,然后构建路径它肯定会工作。

                          【讨论】:

                            【解决方案21】:

                            在 IntelliJ 中 照他们在日食中说的做 “如果您在使用 Eclipse 时遇到这个问题,我一直在遵循许多不同的解决方案,但对我有用的是:

                            右键单击您的项目文件夹并打开属性。

                            从右侧面板中,选择 Java Build Path,然后转到 Libraries 选项卡。

                            选择添加外部 JAR 以导入 mysql 驱动程序。

                            从右侧面板中,选择部署程序集。

                            选择 Add...,然后选择 Java Build Path Entries 并单击 Next。

                            您应该会在列表中看到 sql 驱动程序。选择它并首先单击。

                            就是这样!尝试再次运行它!干杯!”

                            这里我们要在Project Structure -> Libraries -> +(add)中添加jar文件

                            【讨论】:

                              猜你喜欢
                              • 1970-01-01
                              • 1970-01-01
                              • 1970-01-01
                              • 2014-05-24
                              • 2015-05-18
                              • 1970-01-01
                              • 2014-10-11
                              • 2021-04-29
                              相关资源
                              最近更新 更多