Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jenkins共享库找不到SQL驱动程序_Jenkins_Jenkins Pipeline_Jenkins Groovy - Fatal编程技术网

Jenkins共享库找不到SQL驱动程序

Jenkins共享库找不到SQL驱动程序,jenkins,jenkins-pipeline,jenkins-groovy,Jenkins,Jenkins Pipeline,Jenkins Groovy,这是Jenkins共享库中的一个新类 共享库通过Manage Jenkins>Configure System下的标准方法加载 package com.mycorp.core; @Grab(group='com.microsoft.sqlserver',module='mssql-jdbc',version='6.4.0.jre8') 导入com.microsoft.sqlserver.jdbc.SQLServerDriver 导入groovy.sql.sql 类MySQLClass实现可序列化

这是Jenkins共享库中的一个新类

共享库通过Manage Jenkins>Configure System下的标准方法加载

package com.mycorp.core;
@Grab(group='com.microsoft.sqlserver',module='mssql-jdbc',version='6.4.0.jre8')
导入com.microsoft.sqlserver.jdbc.SQLServerDriver
导入groovy.sql.sql
类MySQLClass实现可序列化{
def数据库连接
def dbURL
def dbUsername
def数据库密码
def数据库驱动程序
MySQLClass(数据库配置){
//设置所需的任何实例变量。
this.dbURL=databaseConfig.sql.url
this.dbUsername=databaseConfig.sql.username
this.dbPassword=databaseConfig.sql.password
this.dbDriver=databaseConfig.sql.driver
}
def getConnection(){
返回Sql.newInstance(dbURL、dbUsername、dbPassword、dbDriver)
}
}
databaseConfig对象配置为:

def数据库配置=[
url:'jdbc:sqlserver://myhost:1433;databaseName=mydatabase',
用户:“用户”,
密码:“password”,
驱动程序:“com.microsoft.sqlserver.jdbc.SQLServerDriver”
]
调用MyClass.getConnection()时失败,原因是:

java.sql.SQLException: No suitable driver found for jdbc:sqlserver://myhost:1433;databaseName=mydatabase
    at java.sql.DriverManager.getConnection(DriverManager.java:689)
    at java.sql.DriverManager.getConnection(DriverManager.java:247)
不确定为什么“@Grab”和“import”不能使驱动程序可用

我尝试补充:

@GrabConfig(systemClassLoader=true)
正如其他地方所建议的,但这会导致类编译失败-Jenkins开始将其视为脚本而不是类,因此抛出重复的类名错误


专家们有什么想法吗

您可以手动注册驱动程序

MySQLClass(databaseConfig) {
    //Set any instance variables required.    
    //...
    DriverManager.registerDriver(new SQLServerDriver())
}

驱动程序安装在哪里?也许这是我的误解,但我认为@Grab会为我从Maven Central获取驱动程序?我认为你是对的。我没有使用过
@Grab
。上次我使用SQL驱动程序时,我必须手动安装它。抱歉,对此不确定。通常只会添加到jre/lib/ext,但没有访问权限。可能相关吗?