2011-02-11 27 views
1

有人可以解釋爲什麼Groovy無法找到JDBC驅動程序,即使我已經使用Grape安裝了依賴項了嗎?Groovy無法加載安裝了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. 

回答

5

安裝依賴並不意味着它立即可用於您的腳本,它只會將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') 
+0

+1的@GrabConfig。 – 2012-12-04 22:11:12

相關問題