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


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

groovy RunScript.groovy

代替:

groovy -cp ojdbc5.jar RunScript.groovy

2163
2017-10-31 18:00


起源



答案:


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

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

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

  3. 复制您想要包含的罐子 .groovy/lib

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


11
2017-10-31 18:27



不确定这是否是首选。有时我宁愿使用java的“默认类加载器”。在这种情况下,我可以将jar放入jre / lib / ext以自动加载到默认的类加载器。 - djangofan


答案:


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

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

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

  3. 复制您想要包含的罐子 .groovy/lib

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


11
2017-10-31 18:27



不确定这是否是首选。有时我宁愿使用java的“默认类加载器”。在这种情况下,我可以将jar放入jre / lib / ext以自动加载到默认的类加载器。 - djangofan


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

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

5
2017-10-31 18:26



动态加载JAR对我来说不起作用,除非我也动态地实例化JAR中的任何类。例如,如果MyClass在JAR中,我必须像这样构造它:def myObj = Class.forName(“com.whatever.MyClass”)。newInstance()因此,将JAR文件包含在某处的方式更好groovy-starter.conf目录,除非有一种解决方法,我不知道。 - seansand


groovy 只是用于设置Java类路径的Groovy JAR的包装脚本。我想你可以修改那个脚本来添加你自己的JAR的路径。


0
2017-10-31 18:20





您可以添加以下内容 家当 到Groovy脚本的第一行:

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

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

chmod u+x RunScript.groovy

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

./RunScript.groovy

0
2018-03-19 18:07