Groovy не может загрузить библиотеку, установленную с Grape - PullRequest
1 голос
/ 11 февраля 2011

Может кто-нибудь объяснить, почему Groovy не может найти драйвер JDBC, даже если я уже установил зависимость с помощью Grape?

$ grape --version
Groovy Version: 1.7.7 JVM: 1.6.0_20

$ grape install org.apache.derby derby 10.5.3.0
:: loading settings :: url = jar:file:/opt/groovy-1.7.7/lib/ivy-2.2.0.jar!/org/apache/ivy/core/settings/ivysettings.xml
:: resolving dependencies :: caller#all-caller;working
        confs: [default]
        found org.apache.derby#derby;10.5.3.0 in remote-repo
downloading http://127.0.0.1:8081/artifactory/repo/org/apache/derby/derby/10.5.3.0/derby-10.5.3.0.jar ...
        [SUCCESSFUL ] org.apache.derby#derby;10.5.3.0!derby.jar (388ms)

$ grape resolve org.apache.derby derby 10.5.3.0
/home/alex/.groovy/grapes/org.apache.derby/derby/jars/derby-10.5.3.0.jar

$ groovy file_parser.groovy records.txt csv
Caught: java.lang.ClassNotFoundException: org.apache.derby.jdbc.EmbeddedDriver
        at film_parser.run(film_parser.groovy:16)

$ groovy -cp /home/alex/.groovy/grapes/org.apache.derby/derby/jars/derby-10.5.3.0.jar file_parser.groovy records.txt csv
Inserted 1 rows.

1 Ответ

5 голосов
/ 11 февраля 2011

установка зависимости не означает, что она мгновенно доступна для ваших скриптов, она просто загрузит jar-файлы в локальный кеш.
использование зависимости контролируется аннотациями.
полностью рабочий пример с различными драйверамиэто должно помочь

@GrabConfig(systemClassLoader=true)
@Grab('org.hsqldb:hsqldb:2.0.0')
import groovy.sql.Sql
def sql = Sql.newInstance(
  "jdbc:hsqldb:mem:database", "sa", "", "org.hsqldb.jdbcDriver")
println sql.firstRow('select * from information_schema.tables')
...