即使导入库,仍出现java.lang.ClassNotFoundException: com.mysql.jdbc.Driver错误

7
我已经导入了我的库"mysql-connector-java-5.1.39",就像大多数人回答的那样,但我仍然遇到了这个错误。
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

以下是测试类的代码:

package database;

import java.sql.Connection;
import java.sql.DriverManager;

public class Main {

    public static void main(String[] args) throws Exception {
        getConnection();
    }

    public static Connection getConnection() throws Exception {
        try{
            String driver="com.mysql.jdbc.Driver";
            String url="jdbc:mysql://localhost:3306/test";
            String username="root";
            String password="root";
            Class.forName(driver);
            Connection conn= DriverManager.getConnection(url,username,password);
            System.out.println("connected");
            return conn;
        }
        catch (Exception e){
            System.out.println(e);
        }
        return null;
    }
}

Eclipse目录

使用 macOS。


你是否将.jar文件添加到构建路径中了? - ROMANIA_engineer
在你的Main类中,我没有看到导入com.mysql.jdbc.Driver,因此请使用Class.forName(driver); - Naman
请检查您引用的库。显然,您的编译器无法看到“com.mysql.jdbc.Driver”。即使您已经导入了jar包,您确定这个特定的类在那个jar包中吗? - Dale
我将zip文件添加到构建路径>添加外部jar。我从MySQL官方网站下载了连接器文件,它应该有那个类吗? - Faizan Ul Haq
5个回答

5

请大家跟着我一起说 (:-))

"java.lang.ClassNotFoundException:com.mysql.jdbc.Driver"不是编译错误。

因此,更改>>build<<路径或添加import无法解决问题。

解决方法是确保在运行应用程序时JAR文件位于类路径上。例如,如果您的测试类在bin\database\Main.class中,驱动程序JAR在lib中...

$ java -classpath bin:lib/mysql-connector-java-5.1.39.jar database.Main

2
“java.lang.ClassNotFoundException: com.mysql.jdbc.Driver”在您的代码中出现的最可能原因有以下几种情况:
  1. 您的Classpath中没有mysql-connector.jar。
  2. mysql-connector.jar在您的classpath中,但是某些情况下您的classpath被覆盖了。
  3. mysql-connector.jar在classpath中,但是当前用户没有读取权限。

我已经从MySQL网站添加了连接器zip文件,并通过构建路径添加了它。它应该在类路径中吗? - Faizan Ul Haq
1
你添加的是压缩文件本身还是其中的JAR文件?你需要添加JAR而不是ZIP。如果你手动运行程序,它应该在你的类路径中 - 否则,如果你使用IDE,则会自动从你添加它的lib目录中获取。 - MeisterAjit
2
我之前添加了zip文件,现在通过将jar文件放置在类路径中添加成功了 :) - Faizan Ul Haq
不错。很好。祝你在项目的其余部分一切顺利。 - MeisterAjit
1
上面评论中@MeisterAjit提出的解决方案是唯一一个对我有效的。我在Eclipse中添加了ZIP而不是JAR。这是一个基本错误,Eclipse需要解决。 - Arvindh Mani

2
如果这个JAR包已经被添加到你的外部库中,你可以简单地添加:
import com.mysql.jdbc.Driver;

"并且它将在你的课堂上起作用。这将有助于进一步SO-21580499。"

你需要将该库的jar文件作为外部库添加到你的项目中。然后,我的答案中的if语句就可以正常工作了。 - Naman
先生!我已将从MySQL官网下载的连接器zip文件添加到构建路径中>添加外部JAR。 - Faizan Ul Haq
1
我认为不需要导入该语句。Class.forName使用反射获取类实例,不需要导入。导入在编译时被检查和解析。 - deadpool

1
也许您缺少以下任何一项:为了消除错误,需要同时具备以下两个要素:
  1. 将mysql-connector.jar文件添加到您的WebContent / WEB-INF / lib文件夹中。

  2. 将mysql-connector.jar文件添加到您的类路径中。

https://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.11下载mysql-connector.jar

为了解决第一个问题,请将上述下载的jar文件粘贴到项目的WebContent / WEB-INF / lib文件夹中。

为了解决第二个问题 - 右键单击您的项目,转到属性,然后转到Java Build Path,在 部分中选择 添加外部JAR,并选择上面下载的jar文件。

希望这可以帮助您。


1

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