我有一个 groovy 脚本 createWidget.groovy:
import com.example.widget
Widget w = new Widget()
当我像这样运行它时,这个脚本运行得很好:
$ groovy -cp /path/to/widget.jar createWidget.groovy
但是,我想在脚本中硬编码类路径,这样用户就不需要知道它在哪里,所以我修改了 createWidget.groovy 如下(这是在 groovy 中修改类路径的方法之一):
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 还是其他什么?