加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Groovy:@Grab包含与classpath包含有何不同?

发布时间:2020-12-14 16:30:28 所属栏目:大数据 来源:网络整理
导读:1.一般来说,@ Grape / @ Grab的包含与classpath包含有什么不同? 2.具体来说,什么可能导致以下行为差异? 我对xpp3有一个要求,我表示为: // TestScript.groovy@Grab(group='xpp3',module='xpp3',version='1.1.3.4.O')import org.xmlpull.v1.XmlPullParserFa
1.一般来说,@ Grape / @ Grab的包含与classpath包含有什么不同?

2.具体来说,什么可能导致以下行为差异?

我对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: caused by: org.xmlpull.v1.XmlPullParserException:

但是,如果我手动将Grape提取的.jar添加到我的Groovy类路径中:

$groovy -cp ~/.groovy/grapes/xpp3/xpp3/jars/xpp3-1.1.3.4.O.jar 
         TestScript.groovy

……然后一切正常.

解决方法

Grab使用ivy从maven核心存储库中获取指定的库(以及所有依赖项).然后,它将这些下载的库添加到运行当前脚本的加载器的类路径中.

将jar添加到类路径只是将指定的jar添加到系统类路径中.

由于此示例中没有依赖项,因此可能需要由系统类加载器加载库.

要检查这一点,请尝试添加

@GrabConfig(systemClassLoader= true)
@Grab(group='xpp3',version='1.1.3.4.O')

而不是你现在拥有的一条线

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读