如何在不使用-cp开关的情况下在Groovy中自动加载数据库jar?

时间:2008-10-31 18:00:43

标签: java scripting groovy classpath

我想简化执行调用Oracle数据库的Groovy脚本的操作。如何将ojdbc jar添加到默认的类路径中,以便我可以运行:

groovy RunScript.groovy

而不是:

groovy -cp ojdbc5.jar RunScript.groovy

5 个答案:

答案 0 :(得分:12)

总结来自 Groovy Recipes ,作者:Scott Davis,在./groovy/lib目录中自动包含JAR

  1. 在您的登录目录中创建.groovy/lib
  2. 取消注释$ {GROOVY_HOME} /conf/groovy-starter.conf中的以下行

    load !{user.home}/.groovy/lib/*.jar

  3. 将您要包含的jar复制到.groovy/lib

  4. 看来,对于Groovy 1.5或更高版本,默认情况下你会得到这个(不需要编辑conf),只需将jar放在/ lib目录中。

答案 1 :(得分:5)

有几种方法可以做到这一点。您可以将jar添加到系统的CLASSPATH变量中。您可以在主目录中创建一个名为.groovy / lib的目录,并将jar放在那里。它将在运行时自动添加到您的类路径中。或者,您可以在代码中执行此操作:

this.class.classLoader.rootLoader.addURL(new URL("file:///path to file"))

答案 2 :(得分:0)

groovy只是用于设置Java类路径的Groovy JAR的包装脚本。您可以修改该脚本以添加您自己的JAR的路径,我猜想。

答案 3 :(得分:0)

您可以将以下shebang添加到Groovy脚本的第一行:

var quantity = $(this).closest('td').next().find('input').val();

然后,标记脚本可执行文件:

#!/usr/bin/env groovy -cp ojdbc5.jar

现在,单独运行脚本将自动设置类路径。

chmod u+x RunScript.groovy

答案 4 :(得分:0)

一种方法是在代码中使用@Grab:

    @GrabConfig(systemClassLoader=true)
    @Grab('com.oracle:ojdbc6:12.1.0.2.0')
    Class.forName("oracle.jdbc.OracleDriver").newInstance()