Соединение MySQL с Java и Gradle

Я попытался подключиться к моей базе данных MySQL (версия 14.4 Distrib 5.7.22, для Linux (x86_64)) в моем проекте Java 10. Вот как я получаю драйвер через gradle (снимок моего build.gradle):

dependencies {
implementation 'mysql:mysql-connector-java:8.0.11'
}

Это класс, который я использую для подключения к своей базе данных:

package database;

import java.sql.*;

public class DatabaseConnection {

private Connection conn = null;

public DatabaseConnection() {

}
private boolean openConnection() {
    try {
        Class.forName("com.mysql.cj.jdbc.Driver");
        } 
    catch(Exception ex) {
        System.out.println("MySQL driver couldn't be loaded!");
        }
    try {
        conn = DriverManager.getConnection("jdbc:mysql://localhost/database",
                                       "user","pw");
    } 
    catch (SQLException e) {
        e.printStackTrace();
        return false;
    }
    return true;
}
private boolean closeConnection() {
    try {
        conn.close();
    } catch (SQLException e) {
        e.printStackTrace();
        return false;
    }
    return true;
}
public boolean createUser(String userID, String username) {
    if (!openConnection())
        return false;
    try {
    Statement stmt=conn.createStatement();  
    stmt.executeUpdate("INSERT INTO table(User Name, UserID) VALUES("+username+","+userID+")"); 
    }
    catch (SQLException e) {
        e.printStackTrace();
        closeConnection();
        return false;
    }
    closeConnection();
    return true;        
}

}

Это всегда терпит неудачу с

MySQL driver couldn't be loaded!
java.sql.SQLException: No suitable driver found for 
jdbc:mysql://localhost/database
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:702
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:228
    at database.DatabaseConnection.openConnection(DatabaseConnection.java:2)
    at database.DatabaseConnection.createUser(DatabaseConnection.java:39)
    at connect.GameServer.start(GameServer.java:31)
    at Main.main(Main.java:10)

Исключение, выданное в Class.forName("com.mysql.cj.jdbc.Driver");, является ClassNotFoundException.

Что я делаю неправильно?

com.mysql.jdbc.Driver, как утверждается во многих руководствах, тоже не работает

Jeremias Bohn 26.06.2018 00:54

Это не работает в вашей IDE или только в вашей среде развертывания? В последнем случае вы не включили зависимость в свой пакет развертывания.

Jim Garrison 26.06.2018 00:55

Это последнее. Как мне это сделать с Gradle? Я новичок в этом. В настоящее время я просто запускаю задачу buildNeeded с Gradle Buildship для Eclipse, чтобы создать файл .jar.

Jeremias Bohn 26.06.2018 01:17

Разобравшись с этим, я добавил задачу fatJar (type: Jar) {manifest {attributes 'Implementation-Title': 'Gradle Jar File Example', 'Implementation-Version': version, 'Main-Class': 'Main'} baseName = project.name + '-all' из {configurations.compile.collect {it.isDirectory ()? it: zipTree (it)}} с jar}

Jeremias Bohn 26.06.2018 01:35

Запуск этого и изменение реализации для компиляции в зависимостях добавили библиотеку в мой файл jar

Jeremias Bohn 26.06.2018 01:37

Вам действительно не следует создавать фатжаров. Особенно при использовании библиотек, которые включают определения служб (например, драйверы JDBC). Просто укажите правильный путь к классам (в манифесте или в командной строке).

Mark Rotteveel 26.06.2018 09:31
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
6
2 690
0

Другие вопросы по теме