【问题标题】:Mysql JDBC driver ClassNotFoundExceptionMysql JDBC 驱动程序 ClassNotFoundException
【发布时间】:2011-09-10 10:00:18
【问题描述】:

我的桌面APP无法注册Mysql JDBC驱动

我下载mysql-connector-java-5.1.16.zip

解压mysql-connector-java-5.1.16-bin.jar并放入我的应用中的lib文件夹

将此jar文件添加到Eclipse的构建路径中

但是 Class.forName("com.mysql.jdbc.Driver") 抛出 ClassNotFoundException

怎么了?

【问题讨论】:

    标签: java mysql


    【解决方案1】:

    试试这个:

    public static void main(String[] args) throws Exception {
        Class.forName("com.mysql.jdbc.Driver");
    }
    

    问题是Class.forName(String) 抛出了一个检查异常。对于已检查的异常,您可以:

    1. 捕获异常。
    2. 声明您的方法抛出异常。 (这是我上面的建议)。

    以下是捕获异常的示例:

    public static void main(String[] args) throws Exception {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch(ClassNotFoundException e) {
            //do some exception handling
        }
    }
    

    【讨论】:

    • 从他的屏幕截图中可以清楚地看出,Eclipse 希望他将该行代码包装在一个 catch/try 中,或者在方法签名中添加一个 Throws。他的问题是为什么在运行时找不到 Driver 类。
    • @Tanner:我认为 zim32 在 Eclipse 中发现了问题,甚至还没有运行代码。
    • @zim32 显然你是对的。就像它以如此详细的方式表达关于找不到课程的方式一样。再加上 Eclipse 提供了解决这个问题的提示,我猜错了!
    【解决方案2】:
    1. 您可以仔细检查该 jar 是否确实在 Eclipse 构建路径中。

      Project Properties > Java Build Path > Libraries > Add JARS
      
    2. 在 Eclipse 的“项目”菜单上尝试:Project > Clean

    【讨论】:

      【解决方案3】:

      在你的 lib 目录中,

      1. 右键单击包含您的驱动程序的 jar 文件。
      2. 转到构建路径
      3. 选择添加到构建路径
      4. 再次运行您的代码

      此外,如果您正在运行兼容 JDBC 4.0 的驱动程序,则不再需要自动加载驱动程序。根据 JDBC 4.0 规范,java.sql.Driver 的自动加载下的第 3.1 节说

      DriverManager.getConnection 已被 修改为利用 Java SE 服务提供者机制 自动加载 JDBC 驱动程序。这 无需调用 Class.forName.

      【讨论】:

      • 非常感谢。经过数小时的努力,您的解决方案帮助了我。
      • 感谢@Edwin Dalorzo。当我使用“Class.forName(com.mysql.jdbc.Driver)”加载驱动程序时,我收到错误消息说“com.mysql”未找到,为此我包含了 MySQL 连接器 jar,但没有任何工作。我正在寻找时间,但没有任何效果。但是当阅读您的回答说您不需要显式加载驱动程序并评论该行时,它起作用了。
      猜你喜欢
      • 1970-01-01
      • 2014-09-27
      • 1970-01-01
      • 1970-01-01
      • 2013-03-03
      • 1970-01-01
      • 2014-02-04
      • 2016-03-27
      • 2011-11-05
      相关资源
      最近更新 更多