groovy - 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 -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>
这里需要注意两点:
returnFirst
属性。解析引擎将逐个尝试解析器并返回此特定工件的第一个命中。如果我的预感是正确的,那么这将无法正常工作,并且早期的解析器正在失败并且没有给后来的解析器解决工件的机会。- 解析器列表是有序的,因此更改此顺序将影响结果。
所以,长话短说:打开调试,看看是否有任何帮助。
然后修改或创建grapeConfig.xml
文件,然后:
- 改变
ibiblio
元素的顺序来改变分辨率的顺序 - 为您已验证具有工件的目标添加另一个 maven 解析器(即添加另一个
ibiblio
节点)(并将其首先添加到链中以确保其他一个不会首先失败)。 - 或使用
returnFirst
标志来查看是否将其设置为 false 可以解决您的问题
推荐阅读
- powershell - 将类名解析为类型加速器名称
- json - 如何读取 json 文件并适合 lstm 模型?
- java - 在不创建新变量 Java 的情况下添加、减去和乘以 2 个分数
- latex - 在 Latex 文档类型之间转换参考书目
- javascript - 为什么在 JavaScript 中调用异步函数时我的 HTML 值没有改变?
- html - Bootstrap 下拉菜单提供内部 CSS 样式的故障
- javascript - Firestore - 如何按时间顺序获取 5 个最新文档
- java - 如何使用 SpEL 结果作为 @Value 键
- c# - 使用 Unity 时缺少 ViGEm.NET 命名空间?
- ios - 如何启用 Ios Callkit 呼叫目录扩展