O que é caminho de classe para o emblema do driver do Groovy Console / jdbc?

Esse código de banco de dados está OK no ambiente Java (sem o valor vinculado 'c'), mas no console do Groovy não é possível usar o jdbc corretamente, com exceção

java.sql.SQLException: No suitable driver found for jdbc:sqlserver://localhost;databaseName=

A classe Driver é conhecida pelo script (é carregada sem nulo, etc.), mas provavelmente não está registrada no Drivermanager?

código (eu tento com e semClass.forname() )

import groovy.sql.Sql
import groovy.sql.DataSet

c =   Class.forName('com.microsoft.sqlserver.jdbc.SQLServerDriver')

def db = [url:'jdbc:sqlserver://localhost;databaseName=... ,driver:'com.microsoft.sqlserver.jdbc.SQLServerDriver']
 def sql = Sql.newInstance(db )

EDIT: o que eu já tinha verificado:

O console do Groovy iniciado recentemente não possui sqljdbc4.jar no caminho de classe.

Exceção naturaljava.lang.ClassNotFoundException na linha 4Class.forName(), ou se a linha 4 comentou e os parâmetros db com driver nomeiam a exceção na linha 7Sql.newInstance(db )

Sua classe lógica de driver não foi encontrada, etc ...

1a. se os parâmetros db com 3 argumentos (sem driver), eu assumo que sua exceção legal (e trabalhando em outras situações) mude paraSQLException: No suitable driver na linha 7Sql.newInstance(db )

Também é lógico, o DriverManager não sabe como resolver a chavejdbc:sqlserver . O driver não está registrado e o DriverManager não possui conhecimento mágico que classe implementa.

2. quando adiciono jar ao console do caminho de classe (Script / Adicionar jar (s) ao caminho de classe), as coisas mudam um pouco. Não maisClassNotFoundException e variávelc possui um valor não nulo (classe de driver), masSQLException: No suitable driver continuou.

Meu entendimento da filosofia JDBC: o driver JAR (moderno) usa técnica com arquivoMETA-INF/services/java.sql.Driver ser conhecido porDriverManager. Portanto, na situação correta, o 4º argumento (nome da classe do driver) não é necessário porque é descoberto automaticamente. Por favor, corrija minha compreensão se estiver errado.

Eu usei a palavra 'active' nesse sentido ("inativo" significa que a classe existe e é carregada, mas pode ser usada como driver jdbc).

Meu código máximo é:

import groovy.sql.Sql
import groovy.sql.DataSet
import java.sql.DriverManager;
import java.util.ServiceLoader;


c =   Class.forName('com.microsoft.sqlserver.jdbc.SQLServerDriver')
DriverManager.getDrivers()
ServiceLoader.load(java.sql.Driver.class)
def db = [url:'jdbc:sqlserver://localhost;...,driver:'com.microsoft.sqlserver.jdbc.SQLServerDriver']
def sql = Sql.newInstance(db )

mas aindano suitable driver Exceção

EDIT2: Enumero as coisas com esse código (antes de newInstance ()):

StringBuilder sb = new StringBuilder();
        String grVersion = "brak";

        Enumeration<Driver> dri = DriverManager.getDrivers();

        for (Enumeration<Driver> e = dri; e.hasMoreElements();) {
            Driver e1 = e.nextElement();
            sb.append(e1.getClass().getName()).append(' ');
            sb.append(e1.getMajorVersion()).append('.').append(e1.getMinorVersion());
        }


        // get LOADED drivers niesetty

        ServiceLoader<java.sql.Driver> codecSetLoader = ServiceLoader.load(java.sql.Driver.class);
        for (Driver e1 : codecSetLoader) {
            sb.append(e1.getClass().getName()).append('!');
            sb.append(e1.getMajorVersion()).append('.').append(e1.getMinorVersion());
            sb.append("# ");
        }

e pegue

com.mysql.jdbc.Driver 5.1com.mysql.fabric.jdbc.FabricMySQLDriver 5.1com.mysql.jdbc.Driver!5.1# com.mysql.fabric.jdbc.FabricMySQLDriver!5.1# com.microsoft.sqlserver.jdbc.SQLServerDriver!4.0#  
Exception thrown

java.sql.SQLException: No suitable driver found for jdbc:sqlserver://localhost;databaseName=....

    at ConsoleScript11.run(ConsoleScript11:32)

Meu código (básico) executado é o ambiente Tomcat ainda funcionando ok. Qual é o problema?

questionAnswers(2)

yourAnswerToTheQuestion