2013-06-01 7 views
34

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

я добавил следующую строку в верхней части сценария:

@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-клиента все еще не удается.

В чем проблема?

+0

Был ли мой ответ полезен вообще? – jesseplymale

+0

Извините, мне пришлось переустановить мою среду, прежде чем я смог попытаться следовать вашему совету и посмотреть, не решит ли она мою проблему. Сейчас все работает отлично. Поскольку ваш ответ был единственным за более чем месяц, кажется справедливым принять его. –

ответ

24

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

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

+2

Также попробуйте удалить текущий 'grapeConfig.xml' и загрузить самую последнюю версию Groovy. ([gvm] (http://www.gvmtool.net) отлично работает для этого.) Причина, по которой я говорю, что, по-моему, по умолчанию конфигурация Grape изменилась по версиям. Теперь, например, он по умолчанию включает каталог '~/.m2' пользователя по умолчанию в списке ibiblio. Если это проблема конфигурации Grape, это может исправить ее. – jesseplymale

+2

Я использую Groovy 2.3.2 для написания приложения из командной строки в Intellij IDEA 13 EAP. У меня не было файла ~/.groovy/grapeConfig.xml, поэтому я создал его с предлагаемым контентом, а затем обработал обработку '@ Grab' в IDEA. Вот мой файл grapeConfig.xml: http://d.pr/n/rWmo – duma

+0

У меня такая же проблема. Хитрость в том, что я использовал более старую версию Groovy, но пытаюсь @Grab самой последней версии JAR, что приводит к сбою загрузки. – sozhen

31

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

+2

Я действительно смог получить те же результаты просто удаляют оскорбительные каталоги из моего каталога ~/.groovy/grapes/(xerxes и commons-lang). – jonnybot

+2

Мне пришлось удалить каталог '~/.m2', чтобы эта ошибка исчезла. Просто '~/.groovy/grapes' было недостаточно. –

+0

Не просто удаляйте '~/.m2', вы можете потерять свой' settings.xml' таким образом! Вместо этого я рекомендую удалить '~/.m2/repository'. – dokaspar

1

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

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

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

+0

Очень полезно, если вы не хотите удалять каталог .m2 (требуется много времени для загрузки всех зависимостей снова для всех ваших других maven-сборок). – joanlofe

6

Моя проблема была в том, что groovy (v2.4.8) смотрел в купе maven (~/.m2/repository /) и находил файл pom, но не обнаружил соответствующий артефакт/JAR. Вместо того, чтобы просто перейти к следующему резольверу, который бы преуспел, он просто сдался. Обходным решением было бы удалить файл pom, конкретный кеш каталога или просто временно переименовать репозиторий и снова запустить 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) 

Что означает ваша зависимость является Обще-каротаж 1.1.1.jar. Вы можете запустить:

grape -V install commons-logging commons-logging 1.1.1

Что в конечном итоге решить эту проблему для меня было переопределение конфигурации по умолчанию и настройки usepoms = «ложь» в localm2 распознаватель. Это работает в моем случае, потому что у меня есть pom, но не JAR, поэтому, поскольку Айви не рассматривает POM сейчас, и JAR никогда не был там, чтобы начать, он переходит к следующему распознавателю, который его находит. Так что в итоге:

  • Создайте этот файл: ~/.groovy/grapeConfig.xml
  • С этим содержанием:

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

Я был искушен, чтобы не использовать кэш maven 2 вообще, но если я удалил строку, у меня появились ошибки в том, что вы не можете найти «localm2». Хотя обновление его, чтобы указать на фиктивный каталог работал.

+0

Удивительное решение, спасибо. Примечание. Это будет работать без использования каталога, такого как '.m2test', используемого в приведенном выше фрагменте, вы можете использовать' .m2'. – Daniel

+0

Это, к сожалению, не решило проблему для меня, либо с помощью .m2test', либо '.m2'. У меня такая же версия Groovy 2.4.7. Удаление папок работало, но решение без удаления папки, безусловно, было бы лучше. –

+0

FYI, временно удаляющий строку 'm2', на самом деле работал для меня на groovy 2.4.12 – akostadinov

Смежные вопросы