如何解决java.lang.ClassNotFoundException: com.mysql.jdbc.Driver?

6

我已经编写了这个Java应用程序,用来从命令行响应数据并将其存储到数据库中:

 import java.util.Scanner;
import java.sql.*;


public class Program {


    public static void main(String[] args)throws ClassNotFoundException 


    {


        Connection conn=null;

        try {

            Class.forName("com.mysql.jdbc.Driver");

             conn = DriverManager.getConnection("jdbc:mysql://localhost/DevOps_DB","root","root");


             PreparedStatement st = conn.prepareStatement("INSERT INTO pers " + "VALUES ('"+args[0]+"'); ");
             st.executeUpdate();


        } 



        catch (SQLException ex) {

            System.out.println("SQL Exception : "+ ex.getMessage());

            System.out.println("Vendor Error : "+ ex.getErrorCode());

        }


        catch(ClassNotFoundException ex) {

            ex.printStackTrace();


        }



//      
//      for(String arg : args)            
//      {   
//           System.out.println(arg);            
//      }




    }





}

但我遇到了以下异常:
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:190)
    at Program.main(Program.java:18)

为什么会出现这样的问题?有什么可以帮助解决问题的方法吗?

编辑:

我已经添加了 .jar 文件,请参考下面的图片:

enter image description here


你是如何运行这个程序的?你是如何让MySQL JDBC驱动程序对Java可用的? - Jon Skeet
检查您的类路径中是否有所需的类。 - gipinani
@kent:看一下我的编辑 :) - Akari
@Jon Skeet 请看我的编辑 :) - Akari
你说你已经“添加”了jar文件 - 你是否将它添加到了构建路径中? - Jon Skeet
显示剩余3条评论
7个回答

5
你需要下载mysql连接器jar文件(驱动实现),并将其添加到类路径中。
另外,如果你正在使用JDBC 4.0 (Java 7甚至6),那么你不需要使用Class.forName("com.mysql.jdbc.Driver");。只需将jar文件添加到类路径即可。驱动程序实现将自动从类路径中搜索和加载。

你确定你正在将它添加到你正在运行的同一个项目中吗?请右键单击该项目 --> 构建路径 --> 配置构建路径,然后在“库”选项卡中按“添加外部JAR”,选择你的JAR文件。 - Aniket Thakur
1
由于异常明确指出类加载失败,因为找不到该类,我建议使用 java -cp pathToMySqlCJar yourMainClass 运行并查看。如果成功了,那么您添加 jar 包到项目的方式可能有误,请尝试在 Eclipse 中重新构建您的项目。 - Aniket Thakur

4

好的,你已经添加了jar文件。接下来,请打开服务器:

从窗口中选择“显示视图” -> “服务器”,然后双击服务器。

这将打开一个新窗口,进入“打开启动配置”,并转到类路径,再次添加mysql-connector.jar文件,点击确定即可。


3
你需要下载mysql连接器jar文件(驱动程序实现),并将其添加到类路径中。

2

@Akari:这与MySql的.jar文件有关。请检查MySql的.jar文件是否设置到类路径中。


0

请使用 com.mysql.cj.jdbc.Driver 代替 com.mysql.jdbc.Driver


0

-1

我曾经遇到了一个同样的问题,后来我把.jar文件从(D:)移动到(C:)上,然后它就解决了。


1
你的回答似乎不完整,但也缺乏深刻见解。 - Jelaby
你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心找到有关如何编写良好答案的更多信息。 - Community
这并没有真正回答问题。如果您有不同的问题,可以通过点击提问来提出。如果您想在此问题获得新的答案时得到通知,您可以关注此问题。一旦您拥有足够的声望,您还可以添加悬赏以吸引更多关注。- 来自审核 - Melvin

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