我对xpp3
有一个要求,我表示为:
// TestScript.groovy
@Grab(group='xpp3', module='xpp3', version='1.1.3.4.O')
import org.xmlpull.v1.XmlPullParserFactory;
println "Created: " + XmlPullParserFactory.newInstance()
正在运行$ groovy TestScript.groovy
失败
Caught:org.xmlpull.v1.XmlPullParserException:由:org.xmlpull.v1.XmlPullParserException引起:
但是,如果我手动将Grape提取的.jar添加到我的Groovy类路径:
$ groovy -cp ~/.groovy/grapes/xpp3/xpp3/jars/xpp3-1.1.3.4.O.jar \
TestScript.groovy
......然后一切正常。
答案 0 :(得分:10)
Grab使用ivy从maven核心存储库中获取指定的库(以及所有依赖项)。然后,它将这些下载的库添加到运行当前脚本的加载器的类路径中。
将jar添加到类路径只是将指定的jar添加到系统类路径中。
由于此示例中没有依赖项,因此可能需要系统类加载器加载库。
要检查此项,请尝试添加
@GrabConfig(systemClassLoader= true)
@Grab(group='xpp3', module='xpp3', version='1.1.3.4.O')
而不是你目前拥有的一行Grab