2013-08-03 18 views
12

Il seguente script Groovy non riesce con un'eccezione java.lang.ClassNotFoundException: com.mysql.jdbc.Driver.Groovy - classe non trovata

@Grapes([ 
    @Grab('mysql:mysql-connector-java:5.1.25') 
]) 

import groovy.sql.Sql 

def sql = Sql.newInstance(
    'jdbc:mysql://localhost/books', 
    'root', 
    '', 
    'com.mysql.jdbc.Driver' 
); 

ho guardato dentro il file JAR conservato a C:\Users\Dusan\.groovy\grapes\mysql\mysql-connector-java\jars\mysql-connector-java-5.1.25.jar e contiene la classe Driver.

Cosa può essere che non va?

risposta

21

È necessario:

@GrabConfig(systemClassLoader = true) 

Dopo la @Grab, e basta:

@Grab('mysql:mysql-connector-java:5.1.25') 
@GrabConfig(systemClassLoader = true) 
import groovy.sql.Sql 

def sql = Sql.newInstance(
    'jdbc:mysql://localhost/books', 
    'root', 
    '', 
    'com.mysql.jdbc.Driver' 
) 

dovrebbe fare

1

Come si usa in groovysh?

Secondo il documento, afferrare viene utilizzato nel guscio così

groovy.grape.Grape.grab([group:'mysql:mysql-connector-java:5.1.25']) 

non ho trovato equivalenti per @GrabConfig. Semplicemente non funziona all'interno di Groovysh.

+0

Hai trovato qualche soluzione? –