Я попытался подключиться к моей базе данных 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.
Что я делаю неправильно?
Это не работает в вашей IDE или только в вашей среде развертывания? В последнем случае вы не включили зависимость в свой пакет развертывания.
Это последнее. Как мне это сделать с Gradle? Я новичок в этом. В настоящее время я просто запускаю задачу buildNeeded с Gradle Buildship для Eclipse, чтобы создать файл .jar.
Разобравшись с этим, я добавил задачу 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}
Запуск этого и изменение реализации для компиляции в зависимостях добавили библиотеку в мой файл jar
Вам действительно не следует создавать фатжаров. Особенно при использовании библиотек, которые включают определения служб (например, драйверы JDBC). Просто укажите правильный путь к классам (в манифесте или в командной строке).




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