【问题标题】:How add dependencies into groovy script?如何将依赖项添加到 groovy 脚本中?
【发布时间】:2020-04-08 13:07:14
【问题描述】:

我尝试将 HttpBuilder 添加到 groovy 脚本中,但只能手动添加 (Alt+Ctrl+Shift+S 添加依赖)。但是当我启动脚本时,我在创建新的 httpbuilder 实例 java.lang.ClassNotFoundException: org.apache.http.client.HttpClient 时出错。我手动添加 HttpClient, butClassNotFoundException: net.sf.json.JSONObject 等等。但是当我添加 Ini 库时它工作正常。

我也尝试过使用@Grab

main()
def main() {
    @Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.7' )
    def http = new groovyx.net.http.HTTPBuilder('http://www.codehaus.org')    

并且有编译错误 错误:Groovyc:编译 GroovyTests 时:java.lang.RuntimeException:抓葡萄时出错——[下载失败:net.sf.json-lib#json-lib;2.3!json-lib.jar]

并且 net in def http = new groovyx.net.http.HTTPBuilder('http://www.codehaus.org') 是红色并且无法解析符号'net'错误

很高兴得到任何帮助

【问题讨论】:

  • 我尝试像这里gist.github.com/lalyos/9366690 一样创建grapeConfig.xml 但它不起作用,我有同样的错误
  • 你连接到互联网了吗(cos' Grab 从互联网上下载必要的 jars)?以下脚本工作正常def g() { @Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.7' ) def http = new groovyx.net.http.HTTPBuilder('http://www.codehaus.org') } g()
  • 是的,我有互联网连接。
  • 您是否在 IDE/Editor 中遇到过这些问题(试图让 IDE/Editor 识别“grab”语句中提到的库时)?或者你在执行脚本时遇到这个错误?
  • 我在执行脚本时遇到这个错误

标签: groovy dependencies httpbuilder


【解决方案1】:

由于您现在已经按照 cmets 安装了 groovy 可执行文件,因此下面的代码:

@Grab('org.codehaus.groovy.modules.http-builder:http-builder:0.7')

import groovyx.net.http.HTTPBuilder

def http = new HTTPBuilder('https://jsonplaceholder.typicode.com')
def res  = http.get(path: '/users')

println "Number of users: ${res.size()}"

现在应该运行并打印:

─➤ groovy solution.groovy
Number of users: 10

─➤ 

(在 Groovy 版本上测试:2.5.8 JVM:1.8.0_232 供应商:AdoptOpenJDK 操作系统:Linux)

如果您有一个自定义的grapeConfig.xml 文件,可能会破坏工件的解析。这个文件(如果存在的话)应该在<user home dir>/.groovy/grapeConfig.xml 下,如果没有grapeConfig.xml 文件,groovy 使用的默认文本可以在这里找到:

https://github.com/apache/groovy/blob/master/src/resources/groovy/grape/defaultGrapeConfig.xml

另外,如果你需要调试grapes下载,你应该试试下面的flags(同样在cmets中提到过):

─➤ groovy -Dgroovy.grape.report.downloads=true -Divy.message.logger.level=4 yourGroovyScript.groovy

当解析失败时,它应该打印葡萄实际在做什么的信息。

您的groovy -v 是什么样的?即你使用的是什么版本的 groovy 和什么 jdk?

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-26
  • 2021-03-01
  • 2016-09-15
  • 2015-11-15
  • 2013-12-06
相关资源
最近更新 更多