【问题标题】:Groovy java.sql.SQLException: No suitable driver found for jdbc:sqlserver://Groovy java.sql.SQLException:找不到适合 jdbc:sqlserver:// 的驱动程序
【发布时间】:2020-12-04 20:29:43
【问题描述】:

我对 groovy 很陌生,对我得到的 Groovy java.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')

相同的 SQL JDBC 连接字符串 ("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:\path\to\my\jars groovy-sql-test.groovy

D:\path\to\my\jars 目录中,我同时拥有sqljdbc41.jarmssql-jdbc-7.2.2.jre8.jar 文件。

【问题讨论】:

  • 你试过@GrabConfig(systemClassLoader=true) 吗?
  • 宾果游戏!!!感谢一千@cfrick !!!

标签: windows jdbc groovy mssql-jdbc


【解决方案1】:

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

来自https://groovy-lang.org/databases.html#_connecting_using_grab

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

【讨论】:

    猜你喜欢
    • 2012-08-28
    • 2013-07-19
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    相关资源
    最近更新 更多