使用JDBC的ClassNotFoundException

时间:2017-03-20 20:48:04

标签: java mysql jdbc

我知道这个问题已被问了很多时间,但我从未找到适合我的答案。

我对这一行有疑问,说通常是ClassNotFoundException。

  

未处理的异常:java.lang.ClassNotFoundException

在控制台中:

  

java.sql.SQLException:没有为jdbc找到合适的驱动程序:mysql:xxxxxxxxx

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

但是我在我的项目设置中包含了jar( mysql-connector-java-5.1.41-bin.jar ),我把它放在我的java安装中的所有lib目录中(JRE)和JDK)。

这是更多代码: 公共类连接实现了Listener {

static final String DB_URL = "jdbc:mysql:xxxxxxxxx";

static final String USER = "xxxxxx";
static final String PASS = "xxxxxx";

@EventHandler
public void onPlayerJoin(PlayerJoinEvent e) {
    Player p = e.getPlayer();

    Connection conn = null;
    Statement stmt = null;

    try
    {
        Class.forName("com.mysql.jdbc.Driver");
        conn = DriverManager.getConnection(DB_URL, USER, PASS);

        stmt = conn.createStatement();
        String sql = "INSERT INTO Players (UUID, Pseudo, Rank, Level, Current_xp, Nbr_kick, Nbr_ban) VALUES (" + p.getUniqueId() + ", " + p.getName() + ", Dev, 1, 0, 0, 0);";
        ResultSet rs = stmt.executeQuery(sql);

        rs.close();
        stmt.close();
        conn.close();
    }
    catch(SQLException se)
    {
        getLogger().warning(se.toString());
    }
}

这是我的分类:The classpath of the project

编辑:

好吧,它的工作原理如下:我使用了下面的代码(不是我的),经过一些修正后,它有效(不要像我一样,不要忘记 jdbc中的两个斜杠: MySQL的:// XXXX:3306 / XXXX

System.out.println("-------- MySQL JDBC Connection Testing ------------");

    try {
        Class.forName("com.mysql.jdbc.Driver");
    } catch (ClassNotFoundException es) {
        System.out.println("Where is your MySQL JDBC Driver?");
        es.printStackTrace();
        return;
    }

    System.out.println("MySQL JDBC Driver Registered!");
    Connection connection = null;

    try {
        connection = DriverManager
                .getConnection("jdbc:mysql://xxxx:3306/xxxx", USER, PASS);

    } catch (SQLException es) {
        System.out.println("Connection Failed! Check output console");
        es.printStackTrace();
        return;
    }

    if (connection != null) {
        System.out.println("You made it, take control your database now!");
    } else {
        System.out.println("Failed to make connection!");
    }

1 个答案:

答案 0 :(得分:0)

您应该将mysql驱动程序依赖项添加到maven或gradle中(如果您使用maven或gradle项目),或者从此link下载jar文件并将其添加到项目的类路径中。它必须工作。如果不是 - 你做错了什么。