首页 > 解决方案 > groovy RESTClient 无法在 Windows 7 机器上运行

问题描述

我正在尝试使用以下几行来获取 API 响应,但它对我不起作用。请帮我。

Groovy 版本 = 2.4.15 操作系统 = Windows 7

@Grab(group='org.codehaus.groovy.modules.http-builder',module='http-builder',version='0.7.1')

导入 groovyx.net.http.HTTPBuilder

在此处输入图像描述

标签: groovy

解决方案


正如评论中提到的,我认为最好的起点是在打开以下标志的情况下运行您的脚本:

~> groovy -Dgroovy.grape.report.downloads=true <yourscript>

这应该会给你一些记录,表明葡萄解析正在做什么,并希望它在失败时尝试从哪里下载文件。

有关葡萄解析机制的概述,您可以参考有关葡萄的 groovy 文档

我的猜测是,groovy 正在尝试多个解析器(即 maven central、jcenter 等),其中一个在早期失败,即使后来的一个有工件。在这种情况下,解析引擎自然应该继续尝试,直到它找到一个可以工作的工件,但我以前见过这样的事情失败了。

要修改解析顺序和行为,您应该查看文件:

<your user home dir>/.groovy/grapeConfig.xml

其中,如果文件不存在,则 groovy 使用文件的以下默认数据:

<ivysettings>
  <settings defaultResolver="downloadGrapes"/>
  <resolvers>
    <chain name="downloadGrapes" returnFirst="true">
      <filesystem name="cachedGrapes">
        <ivy pattern="${user.home}/.groovy/grapes/[organisation]/[module]/ivy-[revision].xml"/>
        <artifact pattern="${user.home}/.groovy/grapes/[organisation]/[module]/[type]s/[artifact]-[revision](-[classifier]).[ext]"/>
      </filesystem>
      <ibiblio name="localm2" root="file:${user.home}/.m2/repository/" checkmodified="true" changingPattern=".*" changingMatcher="regexp" m2compatible="true"/>
      <!-- todo add 'endorsed groovy extensions' resolver here -->
      <ibiblio name="jcenter" root="https://jcenter.bintray.com/" m2compatible="true"/>
      <ibiblio name="ibiblio" m2compatible="true"/>
    </chain>
  </resolvers>
</ivysettings>

(来自groovy github 存储库

这里需要注意两点:

  • returnFirst属性。解析引擎将逐个尝试解析器并返回此特定工件的第一个命中。如果我的预感是正确的,那么这将无法正常工作,并且早期的解析器正在失败并且没有给后来的解析器解决工件的机会。
  • 解析器列表是有序的,因此更改此顺序将影响结果。

所以,长话短说:打开调试,看看是否有任何帮助。

然后修改或创建grapeConfig.xml文件,然后:

  • 改变ibiblio元素的顺序来改变分辨率的顺序
  • 为您已验证具有工件的目标添加另一个 maven 解析器(即添加另一个ibiblio节点)(并将其首先添加到链中以确保其他一个不会首先失败)。
  • 或使用returnFirst标志来查看是否将其设置为 false 可以解决您的问题

推荐阅读