【问题标题】:Installing HTTPBuilder for Groovy为 Groovy 安装 HTTPBuilder
【发布时间】:2015-03-05 21:43:16
【问题描述】:

为新手问题道歉,但是如何为 Groovy 安装 HTTPBuilder?

我已将 http-builder-0.7.jar、http-builder-0.7-source.jar 和 http-builder-0.7-javadoc.jar 添加到 GROOVY_HOME/lib。

我还有什么需要做的吗? HTTPBuilder 网站不清楚。

从 GroovyConsole 运行的代码:

import groovy.grape.Grape

Grape.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')

我得到这个回应:

groovy.lang.MissingMethodException: No signature of method: static groovy.grape.Grape.grab() is applicable for argument types: (java.lang.String, java.lang.String, java.lang.String) values: [org.codehaus.groovy.modules.http-builder, http-builder, 0.7]
Possible solutions: grab(java.lang.String), grep(), grab(java.util.Map), grab(java.util.Map, [Ljava.util.Map;), wait(), dump()

编辑 2:

 @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')

回复:

java.lang.NoClassDefFoundError: org/apache/http/client/methods/HttpRequestBase

at ConsoleScript6.run(ConsoleScript6:4)

Caused by: java.lang.ClassNotFoundException: org.apache.http.client.methods.HttpRequestBase

... 1 more

【问题讨论】:

  • 不要将其复制到 lib 文件夹中。它使您所做的任何事情几乎都无法重现。为什么不使用像 gradle 这样合适的构建工具,并将构建器用作依赖项?或者如果您只是在编写脚本,请使用抓取注释来获取它
  • @tim_yates 我从 lib 文件夹中删除了它们。我一直在尝试使用 GroovyConsole 中的 Grape。我将进行编辑以向您展示我所做的。我试图在我的机器上运行 Grape.bat,但它只是关闭了。
  • 您是否尝试过摆脱导入并将抓取线替换为@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.7' )
  • 或者(甚至更短)@Grab('org.codehaus.groovy.modules.http-builder:http-builder:0.7')
  • @tim_yates 我抛出了另一个异常。我正在编辑帖子给你看。

标签: groovy httpbuilder


【解决方案1】:

以下示例开箱即用:

@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')
println http

您需要删除直接添加到 GROOVY_HOME\lib 的任何依赖项 jar。在那里手动添加 jar 可能会产生冲突并导致这些类型的错误。检查您是否已手动将 HttpClient 库添加到库中,将它们也删除并重试。

编辑:使用 IntelliJ 时,我已经能够重现此行为一次。我已经在我的 Groovy 脚本中添加了一个 @Grab 注释。当我添加第二个时,它似乎没有下载或导入新库。

首先,如果你添加第二个@Grab,你需要像下面这样将它包裹在@Grapes注解中(我的第一个错误):

@Grapes([
        @Grab(group='org.codehaus.gpars', module='gpars', version='1.2.1'),
        @Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.7.1')
])

之后,我在这里找到了我的解决方案:Intellij IDEA not importing dependencies from @Grab in Groovy project,它解释了在使用 IntelliJ 时遇到此问题时,请尝试将光标放在 @Grapes 注释旁边并选择 Alt+Enter 然后选择 'Grab the Artifacts' 选项。

【讨论】:

  • 不幸的是不适合我......仍在挖掘泥土。尝试删除本地依赖项,定义自定义 Grape conf,尝试其他版本......仍然无法下载(尽管我在本地 Grape repo 中有 Jar !!)。有什么想法吗?
  • Intellij 部件是我一直在寻找的!.. 一旦我解决了工件,只需使用 import groovyx.net.http.HTTPBuilder 和 HTTPBuilder 导入,就可以用作 def http = new HTTPBuilder('http://www.codehaus.org')
  • @Alex 如果您尝试“抓取工件”的类/脚本中有任何编译错误,则 Alt-Enter 方法将不起作用。暂时注释掉对 HTTPBuilder 或其他错误行的任何引用,然后尝试“Alt-Enter”-->“Grap the Artifacts”选项。
  • 在 2020 年,这种做法效果不佳。 http-builder 自 2014 年以来未更新,它使用自 2010 年以来未更新的 JSON library,实际上不再位于 Maven 中心(尝试下载 JAR:您将获得 404)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多