java.lang.ClassNotFoundException:com.mysql.jdbc.Driver

22

当我尝试运行我的代码时,出现了异常java.lang.ClassNotFoundException

我的代码:

   try 
   {
     Class.forName("com.mysql.jdbc.Driver");
     Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/simple",
      "root","root");
     Statement stmt=con.createStatement();
     String query="SELECT * FROM CUST";
     ResultSet rs=stmt.executeQuery(query);
     while(rs.next())
     {
          System.out.print(rs.getString("CUST_NAME") +" ");
          System.out.print(rs.getString(2) +" ");
          System.out.print(rs.getString(3) +" ");

     }    
     rs.close();
     stmt.close();
     con.close();    
  }   
  catch (ClassNotFoundException e) 
  {
     e.printStackTrace();
  }
  catch (SQLException e) 
  {
     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:188)
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 Simple.MyProg.main(MyProg.java:15)   

我做错了什么?


8
你的jar(包含Driver的那个)是否在类路径中? - Sudhanshu Umalkar
2
只需将mysql-connector-java-version-bin.jar复制到您的lib目录中。如果您正在使用Tomcat,则它会在安装路径/ lib中。 - Daniel Robertus
1
如果使用Maven?只需添加Maven依赖项:http://mvnrepository.com/artifact/mysql/mysql-connector-java - Timeless
10个回答

28

问题不在代码中,而在于您没有将驱动程序添加到项目中!!! 您必须将*.jar驱动程序添加到您的项目中...

尝试将此放入您的Lib目录,然后重新启动Tomcat...

问题出在Class.forName("com.mysql.jdbc.Driver");, 它尝试加载驱动程序,但是没有获取到它,这就是为什么会出现:

java.lang.ClassNotFoundException异常。


为什么它无法从“Libraries>Referenced Libraries”中读取?因为将其添加到Build Path仅会将其添加到此文件夹中。如果您尝试直接在代码中导入类,那么它能正常工作吗? - Prateek Pande

16

我将*.jar文件复制到WEB-INF/lib文件夹中-> 对我有用。在构建路径时,总是会出现此错误消息。


这个对我也起作用了。谢谢。 - admix
那么将其复制到每个项目的“WEB-INF / lib”目录之外的替代方案是什么? - Asim
这个技巧对我也起作用了。谢谢。 - Amol J

5
问题与 MySql 驱动程序相关。
Class.forName("com.mysql.jdbc.Driver");

将MySQL jdbc驱动程序jar文件添加到您的类路径中。

我在JDK上也遇到了这个错误。我正确构建了ClassPath,然后将“mysql-connector-java-5.1.25-bin”放入目录“C:\ Program Files \ Java \ jre7 \ lib \ ext”中,该目录下有我的JDK。然后重新编译和运行,就可以正常工作了。


我也遇到了同样的错误,我该如何设置classPath?这是否与在环境变量中设置CLASSPATH变量有关? - Erum

4

2

如果它是一个独立程序,下载MySQL连接器jar包并将其添加到类路径中。

如果它是一个Maven项目,请添加以下依赖项并运行您的程序。

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.37</version>
</dependency>

2
在类路径中包含jar(jdbc驱动程序)的路径。

2
如果您在运行时遇到此错误,则可能是因为您没有将mysql-connector JAR文件包含到Web服务器的lib文件夹中。现在重要的是将mysql-connector-java-5.1.25-bin.jar添加到您的类路径和Web服务器的lib目录中。以Tomcat 6.0\lib作为示例Tomcat lib路径。

1
注意到,mySQL v8 jar 中 Driver 类的名称 (在编写本文时是 mysql-connector-java-8.0.12.jar) 已更改为 com.mysql.cj.jdbc.Driver 您可以通过进入 jdbc jar 并查看 META-INF/services/java.sql.Driver 文件来验证这一点。

0

我有

runtime('mysql:mysql-connector-java')

改为

compile('mysql:mysql-connector-java')

问题已解决


0
如果您正在使用Eclipse IDE,下载MySQL JDBC连接器JAR文件并将该JAR文件指向构建路径。项目Java构建路径-->库-->添加外部JAR文件。连接器可以从http://dev.mysql.com/downloads/connector/j/获取。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接