Groovy java.sql.SQLException:找不到适合jdbc:sqlserver://的驱动程序



我对groovy很陌生,对我得到的groovyjava.sql.SQLException很困惑。

这是我的代码

// https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc
@Grapes(
@Grab(group='com.microsoft.sqlserver', module='mssql-jdbc', version='7.2.2.jre8')
)
import groovy.sql.*

def username = xxx, password = yyy

// Create connection to MSSQL with classic JDBC DriverManager.
def db = Sql.newInstance("jdbc:sqlserver://localhost:1433;database=tempdb;", username, password, 'com.microsoft.sqlserver.jdbc.SQLServerDriver')

相同的SQLJDBC连接字符串("jdbc:sqlserver://localhost:1433;database=tempdb;", 'com.microsoft.sqlserver.jdbc.SQLServerDriver'(适用于我的其他情况,如Java或JMeter,但不适用于groovy。这就是我得到的:

> groovy groovy-sql-test.groovy
Picked up _JAVA_OPTIONS: -Xms512M -Xmx1g
Caught: java.sql.SQLException: No suitable driver found for jdbc:sqlserver://localhost:1433;database=tempdb;
java.sql.SQLException: No suitable driver found for jdbc:sqlserver://localhost:1433;database=tempdb;
at groovy-sql-0.run(groovy-sql-0.groovy:11)

这是在Win10下运行的。

我也试过

groovy -cp D:pathtomyjars groovy-sql-test.groovy

其中,在D:pathtomyjars目录中,我同时拥有sqljdbc41.jarmssql-jdbc-7.2.2.jre8.jar文件。

您必须使用@GrabConfig(systemClassLoader=true)才能使用系统classloader,从而获取jdbc驱动程序。

发件人https://groovy-lang.org/databases.html#_connecting_using_grab

@GrabConfig语句是确保系统使用类加载器。这确保了驱动程序类和系统像java.sql.DriverManager这样的类在同一个类加载器中。

最新更新