ClassNotFoundException com.mysql.jdbc.Driver

时间:2009-10-18 19:34:26

标签: java exception jdbc

这个问题可能在这里问了很多次。做了一些谷歌搜索上述错误并做了一些更新后,我无法理解为什么我仍然会收到该错误。我已经把我的驱动程序 - 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)  

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

21 个答案:

答案 0 :(得分:29)

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

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

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

  3. 选择Add External JARs以导入mysql驱动程序。

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

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

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

  7. 那就是它!尝试再次运行它!干杯!

答案 1 :(得分:23)

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

答案 2 :(得分:22)

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

答案 3 :(得分:11)

我有同样的问题 但经过长时间的搜索我发现了这个: 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。

答案 4 :(得分:4)

这个ans适用于eclipse用户......

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

如果是的话......那么 检查...在web内容 - > web Inf文件夹 - > lib

并且过去这里的lib文件夹中的jdbc jar文件.....

答案 5 :(得分:3)

您在libjre/libjre/lib/ext中准确提出了什么?它是jar mysql-connector-java-5.1.5-bin.jar还是别的东西(比如目录)?

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

答案 6 :(得分:3)

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

  1. 右键点击'图书馆'并选择“添加库”'
  2. 向下滚动全球图书馆列表'并选择“MySQL JDBC Driver'并点击“添加图书馆”。

答案 7 :(得分:3)

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

2)为mysql选择JDBC驱动程序

3)点击平台独立(独立于架构),ZIP存档

4)下载文件并解压缩

5)(对于Eclipse)单击Project-> properties-> Java构建路径 - >库 (对于Netbeans)右键单击左栏上的库 - >添加jar

6)点击添加外部jar

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

8)完成!

答案 8 :(得分:2)

在NetBeans中,

  1. 右键单击库,选择properties
  2. 选择rub标签
  3. 您需要添加mysql-connector-java.jar并应用

答案 9 :(得分:1)

好的,我发现解决方案将mysql-connector-java.jar的路径改为以下路径:

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

因此,您需要再次将连接器添加到项目并删除之前的连接器。

答案 10 :(得分:1)

在netbean中 右键单击您的项目,然后单击Libraries,然后单击Run选项卡,添加库,然后选择mysql connector

答案 11 :(得分:1)

您应该下载MariaDB connector 然后:

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

答案 12 :(得分:0)

在IntelliJ中 像他们在日食中所说的那样做 “如果你在使用Eclipse时遇到这个问题,我一直在关注许多不同的解决方案,但对我有用的解决方案是:

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

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

选择Add External JARs以导入mysql驱动程序。

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

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

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

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

这里我们必须在Project Structure中添加jar文件 - >图书馆 - > +(加)

答案 13 :(得分:0)

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

答案 14 :(得分:0)

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

答案 15 :(得分:0)

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

为我工作。

答案 16 :(得分:0)

上面已经讨论了大多数可能的解决方案。根据我对这个问题的经验,我把mysql-connector-jar放在webapp模块的/ WEB-INF / lib文件夹中,它对我来说很好。

答案 17 :(得分:0)

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

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

然后,如果你使用Eclipse在WEB-INF lib文件夹中粘贴 mysql-connector-java-5.0.8-bin.jar

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

答案 18 :(得分:0)

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

答案 19 :(得分:0)

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

答案 20 :(得分:-1)

看看它的论点。 forName方法正是" com。 MySQL的。 JDBC。驱动器&#34 ;. 如果是,那么请确保项目的lib文件夹中存在mysql连接器。如果是,那么看到它相同的mysql连接器。 jar文件在ClassPath变量中(系统变量)..