ClassNotFoundException com.mysql.jdbc.Driver

Dus*_*usk 35 java exception jdbc

这个问题可能在这里问了很多次.做了一些谷歌搜索上述错误并做了一些更新后,我无法理解为什么我仍然会收到该错误.我已经在类路径中放了我的驱动程序 - mysql-connector-java-5.1.5-bin:

Java_Home\jre\lib\
Java_Home\jre\lib\ext\
Java_Home\lib
Run Code Online (Sandbox Code Playgroud)

我用来连接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();
        }

    }
Run Code Online (Sandbox Code Playgroud)

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

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)  
Run Code Online (Sandbox Code Playgroud)

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

小智 29

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

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

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

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

  4. 从右侧面板中,选择Deployment Assembly.

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

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

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

  • 你救了我的一天男人(实际上是一周!).在互联网上的所有解决方案中,这是我需要的解决方案.日食的奇怪方式: - > (4认同)

Rut*_*war 24

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


Bos*_*one 22

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


小智 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
Run Code Online (Sandbox Code Playgroud)

我写这个

java -cp .;mysql-connector-java-5.1.14-bin.jar ConTest
Run Code Online (Sandbox Code Playgroud)

这种方式如果你不使用任何IDE只是在Windows中的cmd或Linux中的shell.

  • 对于linux,你必须替换'; 'with':'' (3认同)

小智 5

这是供月食用户使用的……

首先,您检查jdbc jar文件是否已添加到Ear库中。

如果是的话...然后在Web Content-> web Inf文件夹-> lib中检查...

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