53

我全新安装了 Groovy 2.1.4,我想创建一个使用 HTTP 构建器的脚本。

我在脚本顶部添加了以下行:

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

当我在 GroovyConsole 中运行脚本时,出现以下错误:

1 compilation error:

Exception thrown
VI 01, 2013 12:15:39 ODP. org.codehaus.groovy.runtime.StackTraceUtils sanitize

WARNING: Sanitizing stacktrace:

java.lang.RuntimeException: Error grabbing Grapes -- [download failed: commons-logging#commons-logging;1.1.1!commons-logging.jar]

    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)

    ... (aso) ...

java.lang.RuntimeException: Error grabbing Grapes -- [download failed: commons-logging#commons-logging;1.1.1!commons-logging.jar]

当我在 Windows 命令行上运行以下命令时:

grape -V resolve org.codehaus.groovy.modules.http-builder http-builder 0.6

我得到同样的错误,即:

:: problems summary ::
:::: WARNINGS
        [NOT FOUND  ] commons-logging#commons-logging;1.1.1!commons-logging.jar (0ms)

    ==== localm2: tried

      file:C:\Documents and Settings\Administrator/.m2/repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar


:: USE VERBOSE OR DEBUG MESSAGE LEVEL FOR MORE DETAILS
Error in resolve:
    Error grabbing Grapes -- [download failed: commons-logging#commons-logging;1.1.1!commons-logging.jar]

当我尝试通过以下命令直接解决公共日志记录时:

grape -V resolve commons-logging commons-logging 1.1.1

我得到同样的错误,即not found

当我尝试通过适当的命令下载最新版本(即 1.1.3)时,它可以工作。但即使在那之后,解析 http-client 仍然失败。

问题出在哪里?

4

9 回答 9

46

尝试删除~/.m2目录和~/.groovy/grapes目录。

它对我有用。

于 2014-07-25T15:21:31.377 回答
34

看起来您的 Grape 设置仅设置为在本地.m2目录中查找库。检查您的grapeConfig.xml配置文件。(如果您没有,您可以创建它——它应该位于 Groovy 创建您的groovysh.history和缓存目录的同一目录中。)您可以复制Groovy Grape 参考页面grapes上显示的示例文件。

如果这没有帮助,我会尝试删除您的grapes缓存目录并重试。

于 2013-07-12T02:16:26.447 回答
18

我的问题是,groovy (v2.4.8) 正在查看 maven 存储库拳头 (~/.m2/repository/) 并找到 pom 文件但没有找到相关的工件/JAR。它不会继续前进到下一个可能会成功的解析器,而是放弃了。解决方法是删除 pom 文件、特定目录缓存,或者只是临时重命名存储库并按照其他建议再次运行 groovy。或者您可以尝试手动将其添加到存储库。但这些只是暂时的,如果您清除 groovy 缓存或使用其他依赖项,您可能会再次遇到问题。

要解决此问题,您可以打开详细日志记录并尝试手动安装依赖项。因此,如果您的错误类似于:

java.lang.RuntimeException: Error grabbing Grapes -- [download failed: commons-logging#commons-logging;1.1.1!commons-logging.jar, download failed: commons-codec#commons-codec;1.6!commons-codec.jar, download failed: commons-lang#commons-lang;2.4!commons-lang.jar]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)

这意味着您的依赖项是 commons-logging-1.1.1.jar。你可以运行:

grape -V install commons-logging commons-logging 1.1.1

最终为我解决问题的是覆盖默认配置并在 localm2 解析器中设置 usepoms="false" 。它适用于我的情况,因为我有 pom 但没有 JAR,所以由于 Ivy 现在不考虑 POM 并且 JAR 从来没有开始,它会进入下一个找到它的解析器。总而言之:

  • 创建这个文件:~/.groovy/grapeConfig.xml
  • 有了这些内容:

<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}/.m2test/repository/" checkmodified="true" changingPattern=".*" changingMatcher="regexp" m2compatible="true" usepoms="false"/>
	  <ibiblio name="jcenter" root="https://jcenter.bintray.com/" m2compatible="true"/>
	  <ibiblio name="ibiblio" m2compatible="true"/>
	</chain>
  </resolvers>
</ivysettings>

我很想根本不使用 maven 2 缓存,但是如果我删除了该行,我会收到有关无法找到“localm2”的错误。尽管将其更新为指向虚拟目录有效。

于 2017-01-25T04:49:02.390 回答
1

当我在 Windows 中遇到类似问题时,这可能会有所帮助

java.lang.RuntimeException:抓葡萄时出错——[下载失败:commons-collections#commons-collections;3.2.2!commons-collections.jar]

上面所需的 jar 未下载到C:/Users/%USER%/.groovy/grapes/common-collections/jars/文件夹中。
所以手动从https://jar-download.com/
下载需要的版本 并添加到对应的文件夹中

于 2019-03-09T13:58:07.823 回答
1

删除.m2grapes没有为我解决问题,因为当它们被重新填充时,jar 没有被下载。就我而言,我失踪了xml-apis-1.3.04.jar

我最终通过手动下载 jar 文件并将其复制到~/.m2/repository/xml-apis/xml-apis/<version>

如果简单地删除目录不起作用,希望这很有用。

于 2016-07-07T15:27:23.950 回答
0

与问题的情况不完全相同,添加它以防有人发现自己与我有类似情况,我没有任何直接访问机器来检查grapeConfig.xml配置文件的权限,正如接受的答案所建议的那样。对我有用的是配置一个抓取解析器

我做了与文档中所述类似的事情并且它有效(文档链接):

@GrabResolver(name='restlet', root='http://maven.restlet.org/')
@Grab(group='org.restlet', module='org.restlet', version='1.1.6')
于 2020-06-25T14:31:09.667 回答
0

我通过使用注释的更新版本的commons-codec:commons-codecin groovy 脚本解决了类似的问题:@Grab

@Grapes([
  @Grab('org.slf4j:slf4j-simple:1.7.25'),
  @Grab('commons-codec:commons-codec:1.14'),
  @Grab('io.github.http-builder-ng:http-builder-ng-apache:1.0.4')
])
于 2021-02-23T12:11:10.080 回答
0

你需要创建 ~/.groovy/grapeConfig.xml 评论

<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}/.m2test/repository/" checkmodified="true" changingPattern=".*" changingMatcher="regexp" m2compatible="true" usepoms="false"/>
      <ibiblio name="jcenter" root="https://jcenter.bintray.com/" m2compatible="true"/>
      <ibiblio name="ibiblio" m2compatible="true"/>
    </chain>
  </resolvers>
</ivysettings>
于 2021-03-25T08:09:06.953 回答
-1

我在使用 Groovy + Java 7 时遇到了类似的错误。来自 groovy 的错误是:

转换过程中的一般错误:抓葡萄时出错——[未解决的依赖项:com.microsoft.sqlserver#mssql-jdbc;6.4.0.jre7:未找到]

当尝试

葡萄 -V 解析 com.microsoft.sqlserver mssql-jdbc 6.4.0.jre7

命令我有这些错误:

  1. java.net.SocketException:连接重置
  2. javax.net.ssl.SSLException:收到致命警报:protocol_version

解决此问题的方法是添加 -Dhttps.protocols=TLSv1.2 参数:

葡萄 -Dhttps.protocols=TLSv1.2 -V 解析 com.microsoft.sqlserver mssql-jdbc 6.4.0.jre7

然后下载包,我可以从 Groovy 使用它

于 2019-01-07T21:36:12.803 回答