【发布时间】: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')