一尘不染

JavaClassNotFoundException com.mysql.jdbc.Driver

java

这个问题可能在这里问过很多次了。经过一些谷歌搜索上述错误并进行了一些更新后,我不明白为什么我仍然收到该错误。我已经将驱动程序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();
        }

    }

并且上述异常的完整stacktrace为:

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)  

现在,我在这里怎么了?


阅读 333

收藏
2020-03-02

共1个答案

一尘不染

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

2020-03-02