【发布时间】:2022-02-06 00:22:47
【问题描述】:
我正在尝试学习如何在 Java 中使用 Gradle,并且正在开始一个全新的项目。我正在尝试连接到数据库。
我的build.gradle 文件是
plugins {
id 'java'
}
repositories {
mavenCentral()
}
jar {
manifest {
attributes 'Main-Class': 'com.brian.Application'
}
}
dependencies {
testImplementation 'junit:junit:4.13.2'
implementation 'mysql:mysql-connector-java:8.0.25'
}
group 'org.brian'
version '1.0-SNAPSHOT'
文件com.brian.Application是
package com.brian;
public class Application {
public static void main(String[] args) {
DBConnection.runDBTest();
}
}
而我的DBConnection 是
package com.brian;
import java.sql.*;
public class DBConnection {
private static String url = "jdbc:mysql://localhost:3306/RecipeCollection";
private static String driverName = "com.mysql.cj.jdbc.Driver";
private static String username = "RecipeCurator";
private static String password = "Sup3rYumm!";
private static Connection con;
private static String urlstring;
public static Connection getConnection() {
try {
Class.forName(driverName);
try {
con = DriverManager.getConnection(url, username, password);
} catch (SQLException e) {
// System.out.println("Failed to create database connection");
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
System.out.println("Could not find driver for " + driverName);
e.printStackTrace();
}
return con;
}
public static void runDBTest() {
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
con = DBConnection.getConnection();
try {
stmt = con.createStatement();
rs = stmt.executeQuery("SELECT 1");
} catch (SQLException e) {
e.printStackTrace();
System.out.println("Something went wrong");
}
System.out.println(rs);
}
}
当我执行./gradlew build 时,它会成功构建。
当我尝试使用 java -jar build/libs/recipe-curator-1.0-SNAPSHOT.jar 运行它时,我收到此错误
Could not find driver for com.mysql.cj.jdbc.Driver
java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:315)
at com.brian.DBConnection.getConnection(DBConnection.java:15)
at com.brian.DBConnection.runDBTest(DBConnection.java:33)
at com.brian.Application.main(Application.java:5)
Exception in thread "main" java.lang.NullPointerException
at com.brian.DBConnection.runDBTest(DBConnection.java:35)
at com.brian.Application.main(Application.java:5)
我不确定发生了什么,因为我有 mysql 作为依赖项,并且构建似乎工作正常,但它没有运行。我做错了什么?
【问题讨论】:
标签: java gradle mysql-connector