Следующий скрипт Groovy правильно работает из командной строки. (Я успешно получаю соединение.)
// ---- jdbc_test.groovy
import java.sql.*
Class.forName("com.mysql.jdbc.Driver")
def con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/test",
"root",
"password")
println con
> groovy -cp lib\mysql-connector-java-5.1.25-bin.jar script\jdbc_test.groovy
com.mysql.jdbc.JDBC4Connection@6025e1b6
Но если тот же скрипт загрузить в GroovyConsole (2.4.3) и запустить - после добавления mysql-connector-java-5.1.25-bin.jar
с помощью 'Script' | «Добавить банку (ы) в ClassPath» - не удается:
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/test
at java_sql_DriverManager$getConnection.call(Unknown Source)
at jdbc_test.run(jdbc_test.groovy:3)
Все остальные пакеты или классы, которые я добавлял в путь к классам в GroovyConsole и с которыми экспериментировал, работали. Есть ли какое-то неожиданное взаимодействие между загрузкой классов Groovy и тем, как работает DriverManager?
Есть ли способ обойти это? Я пытаюсь использовать GroovyConsole для интерактивного тестирования кода JDBC (библиотеки функций, каждая из которых принимает Connection в качестве первого аргумента).
ОБНОВЛЕНИЕ: часть Class.forName()
работает нормально. Если я «Сценарий» | «Очистить контекст сценария» и повторно запустить сценарий в GroovyConsole, вместо этого я получаю:
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
Если я снова добавлю mysql-connector-java-5.1.25-bin.jar
, я вернусь к получению:
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/test