【发布时间】:2013-04-25 16:14:21
【问题描述】:
我有一个 groovy 脚本 createWidget.groovy:
import com.example.widget
Widget w = new Widget()
当我这样运行这个脚本时,它运行得很好:
$ groovy -cp /path/to/widget.jar createWidget.groovy
但是,我想在脚本中硬编码classpath,这样用户就不需要知道它在哪里,所以我修改createWidget.groovy如下(这是groovy中修改classpath的方法之一):
this.getClass().classLoader.rootLoader.addURL(new File("/path/to/widget.jar").toURL())
import com.example.widget
Widget w = new Widget()
但这总是失败并在导入时出现运行时错误:unable to resolve class com.example.widget。
这看起来确实不正统,我认为您不能在导入之前弄乱 rootLoader 还是其他什么?
【问题讨论】:
-
写一个批处理文件或bash脚本来运行带有cp参数的groovy可能更容易?
-
您可以通过删除它并尝试
def w = Class.forName( 'com.example.Widget' ).newInstance()代替构造函数来测试您的导入理论...