Gradle Не удалось создать службу типа InitScriptHandler, используя BuildScopeServices.createInitScriptHandler()
Я использовал команду построения градации в терминале Centos 7, и я получил результат:
FAILURE: Build failed with an exception.
* What went wrong:
Could not create service of type InitScriptHandler using BuildScopeServices.createInitScriptHandler().
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
Ответы
Ответ 1
Попробуйте установить переменную GRADLE_USER_HOME
в папку, к которой у вас есть действительный доступ. Тогда эта ошибка исчезнет.
Например: я столкнулся с той же проблемой сегодня, когда выполнял gradle clean
на новой подчиненной машине.
Моя версия Gradle была 2.3.
С --stacktrace я узнал, что он пытается создать папку .gradle
для хранения данных кэша Gradle (в то время как я вызывал Gradle для запуска чистой задачи на ведомом устройстве), и он пытался создать эту папку в /some/location/where/gradle/существует ИЛИ некоторые /path/location/xxx/yyy, где пользователь, который запускал Gradle на подчиненном компьютере, не имел действительного доступа для записи (создание папки/файлов).
то есть пользователь, которого я использовал для подключения с компьютера Jenkins к подчиненному, не имел права на запись в touch
/mkdir
в папке по умолчанию (где Грэдл подумал, хорошо, я должен создать папку .gradle здесь).
Чтобы исправить это, я добавил вышеупомянутую переменную GRADLE_USER_HOME
в разделе ведомой переменной GRADLE_USER_HOME
. Теперь, когда у меня есть действительный доступ в моем домашнем каталоге, я был в порядке.
![enter image description here]()
Окружение:
GRADLE_USER_HOME=~/gradle_2_3_cache/.gradle
решил проблему.
Вы также можете установить его в ~/.gradle. Но я поставил его под пользовательской папкой в моем ~
домашнего каталога (gradle_2_3_cache). Это поможет мне в случае, если у меня на том же ведомом компьютере работает другой ведомый, но с другой версией Gradle для версии 2.5 и т.д., И если мне нужен кеш .gradle
для версии 2.3 и 2.5/x в отдельных папках.
Ответ 2
Для меня убийство демона Gradle (gradle --stop
) действительно помогло и gradle --stop
проблему.
Ответ 3
Проблема решена путем простого использования "sudo" и предоставления доступа к градиенту для создания папки и записи кеша. использовать:
sudo ./gradlew
Ответ 4
У меня такая же проблема. Для меня это сработало после того, как я исключил папку.gradle, если вы не можете удалить попытку переименования.
Ответ 5
Если вы используете обертку gradlew, в корневой директории make.gradle_new
mkdir .gradle_new
chmod -R 777 .gradle_new
и запустите gradlew с аргументами:
--project-cache-dir .gradle_new
Ответ 6
Если вы только что обновили версию JDK и создали свой проект Gradle, вы можете дважды проверить версию обертки, поддерживающую ваш новый JDK. Если нет, подумайте об удалении связанных с оболочкой файлов из проекта (gradlew
, gradlew.bat
и gradle/wrapper/*
) и повторно gradle/wrapper/*
их с помощью CLI Gradle, например:
gradle wrapper --gradle-version <new-version-number>
например, gradle wrapper --gradle-version 4.10.2
Это, конечно же, предполагает, что ваша установка Gradle обновлена. Если нет, сначала вы хотите обновить это.
Ответ 7
Рестарт машины решил проблему.
Ответ 8
Я получил ту же ошибку, избавился от нее, используя правильную версию Java/JDK. Я пытался построить проект Java 8 с помощью Java 11 JDK. Проверьте, какую версию Java JDK вы используете.
Для параллельной разработки проектов с различными версиями Java теперь я использую jEnv для управления различными версиями JDK: http://www.jenv.be/
Ответ 9
Это вопрос разрешения. сделать gradle wrapper --stacktrace
вы должны увидеть что-то вроде этого Не удалось создать родительский каталог '/home/cloud_user/my-project/gradle' при создании каталога '/home/cloud_user/my-project/gradle/wrapper'
пользователь cloud_user не имеет доступа к каталогу, который делает cloud_user владельцем папки sudo chown -R cloud_user:cloud_user/home/cloud_user/my-project/
Ответ 10
Если вы используете шаг сборки "Invoke Gradle script", нажмите "Дополнительно", чтобы открыть дополнительные параметры. Найдите "Принудительно GRADLE_USER_HOME использовать рабочее пространство" и проверьте его.
![Invoke Gradle script screenshot]()
Ответ 11
В будущем.
У меня была та же проблема, проблема заключалась в том, что антивирус блокировал OpenJdk платформу двоичный и java.exe, что помешало студии Android не изменять файлы
Ответ 12
Я столкнулся с этим исключением при попытке создать проект, который был смонтирован как файловая система только для чтения в виртуальной машине. Проект установил свой собственный кеш градиента, поэтому изменение GRADLE_USER_HOME
не сработало. Мне пришлось изменить файловую систему для чтения/записи.
Ответ 13
Вам просто нужно запустить его под суперпользователем (sudo....), он работает для меня
Ответ 14
Для меня это было связано с версиями Java. У меня установлена Java 10 и как Java по умолчанию в моей системе. Установка JAVA_HOME, указывающего на Java 8, была достаточной для сборки проекта (graphql-spring-boot).
Ответ 15
У меня перезагрузка компьютера работала
Ответ 16
Если вы запускаете Docker-in-Docker и монтируете каталог проекта с хоста докера непосредственно в контейнер докера:
-v ${PWD}:/path_to_project -w /path_to_project
владельцы разные, и пользователь контейнера докера (gradle или root) не может переопределить/удалить ./buildSrc/build
или ./build/
Одно из исправлений - скопируйте исходные коды внутри контейнера во временный каталог и создайте его там.
Что-то вроде этого (сначала смонтированный в project
, но затем скопированный в project-copy
, чтобы "отделить" реальные файлы хост-системы и запустить сборку в копии):
docker run -v "${PWD}":/home/gradle/project -w /home/gradle/project-copy \
--rm \
--entrypoint sh \
gradle:5.5.1-jdk11 \
-- -c "cp -r -T /home/gradle/project ./ && ./gradlew build"
Ответ 17
В моем случае у меня были плохие учетные данные для частного хранилища Maven. JIdea
не показывает внутреннее исключение, но выполнение gradle build
немедленно выявляет проблему.