7

Groovy でスクリプトを書いてい./myscript.groovyます。-classpathただし、このスクリプトにはサードパーティのライブラリ (MySQL JDBC) が必要であり、または-cp引数を使用する以外にこれをスクリプトに提供する方法がわかりません。

`./monitor-vouchers.groovy -cp /path/to/mysql-lib.jar`

ここでは説明しませんが、実際には -classpath/-cp 引数を使用して JAR の場所をスクリプトに提供することはできません。スクリプト自体から JAR をロードする方法はありますか? 使ってみた@Grab

import groovy.sql.Sql


@Grab(group='mysql', module='mysql-connector-java', version='5.1.19')
def getConnection() {
    def dbUrl = 'jdbc:mysql://database1.c5vveqm7rqgx.eu-west-1.rds.amazonaws.com:3306/vouchers_prod'
    def dbUser = 'pucaroot'
    def dbPassword = 'password'
    def driverClass = "com.mysql.jdbc.Driver"

    return Sql.newInstance(dbUrl, dbUser, dbPassword, driverClass)
}

getConnection().class

しかし、これにより次のエラーが発生します。

Caught: java.sql.SQLException: No suitable driver
java.sql.SQLException: No suitable driver
        at monitor-vouchers.getConnection(monitor-vouchers.groovy:13)
        at monitor-vouchers.run(monitor-vouchers.groovy:17)

このスクリプトを実行する方法はありますか./monitor-vouchers.groovy

4

2 に答える 2

13

あなたはできるはずです:

import groovy.sql.Sql

@GrabConfig(systemClassLoader=true)
@Grab('mysql:mysql-connector-java:5.1.19')
def getConnection() {
    def dbUrl = 'jdbc:mysql://database1.c5vveqm7rqgx.eu-west-1.rds.amazonaws.com:3306/vouchers_prod'
    def dbUser = 'pucaroot'
    def dbPassword = 'bigsecret'
    def driverClass = "com.mysql.jdbc.Driver"

    return Sql.newInstance(dbUrl, dbUser, dbPassword, driverClass)
}

getConnection().class
于 2012-05-14T14:59:54.483 に答える
9

さらに 2 つのオプション:

  1. jar を${user.home}/.groovy/libに配置します。
  2. jar が既知の場所にある場合は、次のコードを使用して現在のクラス ローダーに読み込みます。

    this.class.classLoader.rootLoader.addURL( 新しい URL() )

于 2012-05-15T17:11:14.400 に答える