我试图连接到Java中的一个数据库。我的数据库是MariaDB,所以我更喜欢使用MariaDB连接器。我正在使用Gradle来生成一个jar,然后运行在一个SpigtMin克拉夫特服务器中。
当连接到DB时,我使用con = DriverManager.getConnection(jdbcURL);
where jdbcURL == "jdbc:mariadb://playerdata:1234@127.0.0.1:3306/playerdata"
。
我得到了错误java.sql.SQLException: No suitable driver found for jdbc:mariadb://playerdata:1234@127.0.0.1:3306/playerdata
。
在JDBC中将mariadb
替换为mysql
时,它将按预期的方式工作。很明显,MariaDB连接器在运行时没有添加到类路径中,所以我检查了jar,它只包含我自己的编译源代码。为了解决这个问题,我尝试用gradle插件“影子”创建一个“胖”罐子。虽然现在看来连接器的编译后的java被添加到jar中,而且Class.forName("org.mariadb.jdbc.Driver");
不会抛出异常,但在尝试连接到JDBC时,我仍然会得到以jdbc:mariadb://
开头的相同的SQLException
。
以下是我的build.gradle
片段
plugins {
id 'java'
id "com.github.johnrengelman.shadow" version "7.1.2"
}
...
dependencies {
...
runtimeClasspath 'org.mariadb.jdbc:mariadb-java-client:3.0.3'
shadow 'org.mariadb.jdbc:mariadb-java-client:3.0.3'
}
在运行时,虽然有可能,但我确实不希望更改JVM参数来修改类路径。
发布于 2022-03-05 16:38:59
这太奇怪了。我将JDBC更改为jdbc:mariadb://127.0.0.1:3306/playerdata?user=playerdata&password=1234
,它可以工作。将此更改还原回jdbc:mariadb://playerdata:1234@127.0.0.1:3306/playerdata
会产生不同的错误java.sql.SQLException: Incorrect port value : 1234@127.0.0.1
。我确信我没有改变什么,但我有谁可以抱怨呢?
https://stackoverflow.com/questions/71361531
复制相似问题