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

Gradle демон сборки неожиданно исчез (возможно, он был убит или, возможно, разбился), при создании Android-проекта на Jenkins

У меня есть Android-проект, который успешно работает в Android Studio.

Теперь я хочу построить его на Дженкинсе. Но когда я делаю, я получил следующую ошибку: Gradle демон сборки исчез неожиданно (возможно, он был убит или, возможно, разбился)

Исключение:

org.gradle.launcher.daemon.client.DaemonDisappearedException: Gradle build daemon disappeared unexpectedly (it may have been killed or may have crashed)
    at org.gradle.launcher.daemon.client.DaemonClient.handleDaemonDisappearance(DaemonClient.java:222)
    at org.gradle.launcher.daemon.client.DaemonClient.monitorBuild(DaemonClient.java:198)
    at org.gradle.launcher.daemon.client.DaemonClient.executeBuild(DaemonClient.java:162)
    at org.gradle.launcher.daemon.client.DaemonClient.execute(DaemonClient.java:125)
    at org.gradle.launcher.daemon.client.DaemonClient.execute(DaemonClient.java:80)
    at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:43)
    at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:173)
    at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:241)
    at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:214)
    at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:35)
    at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24)
    at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:207)
    at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169)
    at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33)
    at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22)
    at org.gradle.launcher.Main.doAction(Main.java:33)
    at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:55)
    at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:36)
    at org.gradle.launcher.GradleMain.main(GradleMain.java:23)

Я читаю связанные темы, но это не помогает. Я попытался создать его с помощью демона gradle и без него, но проблема все еще существует.

4b9b3361

Ответ 1

EDIT Похоже, что с новыми версиями Gradle произошли некоторые изменения.

Начиная с версии 3.0 вы больше не должны отключать демона вашего CI

[Мы] рекомендуем использовать [демон] как для машин разработчиков, так и для серверов непрерывной интеграции.

Однако, если вы подозреваете, что Daemon делает ваши CI-сборки неустойчивыми, вы можете отключить его для использования новой среды выполнения для каждой сборки, так как среда выполнения полностью изолирована от любых предыдущих сборок.

ПРЕДЫДУЩИЙ ОТВЕТ

Он рекомендовал отключить daemon на любом сервере CI. используйте этот параметр, чтобы отключить его

--no-daemon

Ответ 2

После получения этого сбоя я попробовал несколько вещей, чтобы заставить GradleDaemon перестать работать на моем CI-сервере. Ни один из них не работал.

Я нашел ответ на форуме gradle.org, который предположил, что GradleDaemon всегда будет работать в любом случае. Флаг -no-daemon просто запустил бы эту конкретную сборку, а не оставался на неопределенный срок.

Если вы укажете аргументы JVM, требующие forking, Gradle разветкит новую JVM. Независимо от того, нужен ли вам процесс демона, выполняемый класс называется GradleDaemon. Переключатель -no-daemon должен вызывать разветвленный процесс, а не длительный процесс daemon, но он все равно будет запускать класс GradleDaemon.

Источник: https://discuss.gradle.org/t/no-daemon-switch-ineffective-if-jvm-settings-cause-new-fork/14919/5

Возможно, я читаю это неправильно, и я не могу ручаться за достоверность ответа, но я думаю, что причиной этой ошибки является нехватка памяти для Gradle. Поскольку он всегда будет запускать GradleDaemon.

Поэтому я добавил

org.gradle.jvmargs=-Xmx1024m 

к моему ~/.gradle/gradle.properties и он больше не дал мне эту ошибку.

Ответ 3

Похоже, это проблема, связанная с памятью. Тем не менее, отключение демона, предложенное Олегом, похоже, помогает.

использование

org.gradle.daemon = ложь

в

gradle.properties

либо в папке ~/.gradle, либо в папке проекта.

Ссылка: https://docs.gradle.org/current/userguide/gradle_daemon.html#sec:disabling_the_daemon

Ответ 4

В нашем случае проблема была вызвана тем, что сервер CI передавал переменные среды с символами без ascii (т.е. именами авторов фиксации).

Добавление свойств file.encoding=utf-8 в Gradle немедленно устранило проблему.

Ответ 5

gradle -Dorg.gradle.jvmargs=-Xmx1536m assembleDebug

Или добавьте org.gradle.jvmargs=-Xmx1536m в gradle.properties файл.

Ответ 6

Никто не может столкнуться с этим, так как это довольно глупо, но...

Моя проблема была странным персонажем, присутствующим в моем сообщении о совершении... Я скопировал предыдущее сообщение о фиксации из gitlab, которое содержало emoji и вставляло его в заголовок запроса на объединение, вместо синтаксиса normal :bug:

Ответ на akru помог мне в правильном направлении 🙏

Ответ 7

Gradle build daemon disappeared unexpectedly во многих случаях, означая, что сам Gradle или даже Java потерпели крах. В моем случае это была java. Заполните отчет об ошибке: https://bugzilla.redhat.com/show_bug.cgi?id=1408857

Посмотрите на файлы с такими hs_err_pid%p.log: hs_err_pid%p.log где% p - PID процесса в каталоге, из которого вы запускаете задачу gradle.

Обновление: Похоже, сама проблема Gradle. В моем случае из-за использования родного jansi. В выпуске предусмотрено обходное решение:

ln -sb /dev/null /home/pasha/.gradle/native/jansi/1.17.1/linux64/libjansi.so

Ответ 8

Я попробовал решение --no-daemon, но моя сборка продолжала сбой с тем же DaemonDisappearedException.

Я решил это, увеличив ОЗУ сервера, на котором я запускаю Jenkins. В AWS EC2, что означало необходимость увеличения типа экземпляра EC2, что приводит к увеличению ОЗУ.

Ответ 9

Иногда просто выполнение Build → Clean Project работает. Попробуйте, прежде чем начинать с других изменений в файле gradle.

Ответ 10

Ничего себе, в моем случае закрытие Android Studio и повторное открытие работало просто отлично, и ошибка исчезла. :)

Ответ 11

Я использовал Android Studio в Windows 7, и эта ошибка появилась. Что для меня работало, это убить Java.exe из Windows TaskManager.

Ответ 12

В моем случае я ZelixKlassMaster свой проект студии android и использую ZelixKlassMaster для запутывания своего кода, проблема в том, что мой путь к классам на Zelix был установлен на 27 но мой проект использовал android 28 Надеюсь, это поможет любым будущим посетителям. как я отлаживал, это был мой seed файл распечатывал эту ошибку

ERROR: Invalid classpath in "classpath" statement at line 69 : "C:\Users\Rab\AppData\Local\Android\Sdk\platforms\android-27\android.jar" is not a valid path.

Ответ 13

У нас такая же проблема с vsts, мы обнаружили, что это происходит, когда переменная окружения имеет символ utf8, а в ОС не установлена кодировка для .UTF-8.

Вы можете увидеть: http://www.iasptk.com/ubuntu-fix-locale-issue/

Ответ 14

Вопрос::
Демон сборки Gradle неожиданно исчез (возможно, он был убит или мог разбиться)

Решение :: перейдите к gradle.properties и введите приведенный ниже код в org.gradle.jvmargs = -Xmx1536m

org.gradle.daemon = ложь