Подтвердить что ты не робот

Groovy - Grab - загрузка не удалась

У меня есть новая установка Groovy 2.1.4, и я хотел бы создать script, который использует построитель HTTP.

Я добавил следующую строку вверху script:

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

Когда я запускаю script в 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 все равно не работает.

Где проблема?

4b9b3361

Ответ 1

Похоже, ваши настройки Grape устанавливаются только для поиска в локальном каталоге .m2 для библиотеки. Проверьте конфигурационный файл grapeConfig.xml. (Если у вас его нет, вы можете его создать - он должен идти в том же каталоге, где создаются каталог кеша groovysh.history и grapes Groovy.) Вы можете скопировать файл примера, показанный на справочная страница Groovy Grape.

Если это не поможет, я попытаюсь удалить каталог кэша grapes и повторить попытку.

Ответ 2

Попробуйте удалить каталог ~/.m2, а также ~/.groovy/grapes directory.
Это сработало для меня.

Ответ 3

Моя проблема заключалась в том, что 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

То, что в итоге решило проблему для меня, было переопределение конфигурации по умолчанию и установка usepoms = "false" в resolver localm2. Это работает в моем случае, потому что у меня есть pom, но не JAR, поэтому, поскольку Айви не рассматривает 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>

Ответ 4

Удаление .m2 и grapes не разрешило проблему для меня, как когда они были перезаписаны, банку не загружали. В моем случае я отсутствовал xml-apis-1.3.04.jar

В конце концов я решил проблему, вручную загрузив файл jar и скопировав его в ~/.m2/repository/xml-apis/xml-apis/<version>

Надеюсь, это полезно, если просто удалить каталоги не работает.