2015-06-15 4 views
7

я использовал Gradle команду сборки в Centos 7 терминала, и я получил вывод:Gradle Не удалось создать сервис типа InitScriptHandler с помощью BuildScopeServices.createInitScriptHandler()

FAILURE: Строить не удалось с исключением.

  • Что пошло не так: Не удалось создать сервис типа InitScriptHandler используя BuildScopeServices.createInitScriptHandler().

  • Попробуйте: Запустите с опцией --stacktrace, чтобы получить трассировку стека. Запустите с опцией --info или --debug, чтобы получить больше выходных данных журнала.

+1

У вас есть соответствующие права для запуска команды? – Opal

+0

Я думаю, что вы правы, проблема с привилегиями, потому что в корневом пользовательском градиенте правильно работает, я пытаюсь установить 777 разрешений для перехода в папку gradle с помощью команды chmod -R 777 ./gradle-2.4, но ошибка все еще происходит. Папка Gradle, которую я распаковал в домашнем каталоге пользователя, с которым я получил ошибку, описанную выше. –

+0

Plonking 'sudo' перед командой, которую я набрал, исправил это. Сообщение об ошибке может быть немного более полезным в этом отношении. – ben3000

ответ

12

Попробуйте установить переменную GRADLE_USER_HOME в папку, в которой у вас есть действительный доступ. Тогда эта ошибка исчезнет.

Для примера: сегодня я столкнулся с той же проблемой, когда я запускал команду «gradle clean» на новой подчиненной машине.

My Gradle версия была 2.3.

С помощью -stacktrace я узнал, что пытался создать папку «.gradle» для хранения данных кэша Gradle (в то время как я вызывал Gradle для запуска чистой задачи на подчиненном устройстве), и он пытался создать эту папку в /some/location/where/gradle/exists OR some/path/location/xxx/yyy, где пользователь, который запускал Gradle на подчиненном компьютере, не имел действительного доступа к записи (создать папку/файлы).

т. Е. Пользователь, которого я использовал для подключения с машины Дженкинс к подчиненному устройству, не имел права на запись, чтобы коснуться/mkdir в месте по умолчанию (где думал Градл, ОК, я должен создать здесь папку .gradle).

Чтобы исправить это, я добавил указанную выше переменную GRADLE_USER_HOME в разделе Variable Variable. Теперь, когда у меня есть действительный доступ в моем домашнем каталоге, я был в порядке.

Окружение:

GRADLE_USER_HOME=~/gradle_2_3_cache/.gradle 

решен вопрос.

Вы также можете установить его на ~/.gradle. Но я установил его под пользовательскую папку внутри моего домашнего каталога (gradle_2_3_cache). Это поможет мне в случае, если у меня будет другое подчиненное устройство, работающее на одной и той же ведомой машине, но с другой версией Gradle для версии версии версии 2.5 и, если я захочу использовать кеш .gradle для версий 2.3 и 2.5/x в отдельных папках.

+0

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

2

У меня была та же проблема. Для меня это сработало после того, как я исключил папку .grandle, если вы не можете удалить попытку переименования.

0

Для справок в будущем. У меня была та же проблема, проблема в том, что антивирус блокировал OpenJDK платформы бинарный и java.exe мешавший андроида студию от того, чтобы изменить файлы

1

Для меня, убив демона Gradle действительно помогли и исправил проблему.

+0

То же самое здесь, мой диск был заполнен, но даже после того, как он занял больше места, он все равно не сработает, потому что демон Gradle не получил новости по какой-то причине. – wkarl

0

Если вы используете оболочку gradlew, в корневой директории make.gradle_new

mkdir .gradle_new 
chmod -R 777 .gradle_new 

и запустить gradlew с аргументами:

--project-cache-dir .gradle_new 
Смежные вопросы