web-dev-qa-db-ja.com

JenkinsでAndroidプロジェクトをビルド中に、Gradleビルドデーモンが予期せず消滅しました(強制終了またはクラッシュした可能性があります)

Android St​​udioで正常にビルドされるAndroidプロジェクトがあります。

今、私はジェンキンスでそれを構築したい。しかし、私がやっていると、次のエラーが発生しました: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デーモンを使用して、それなしでビルドしようとしましたが、問題はまだ存在します。

46

EDITGradleの新しいバージョンにはいくつかの変更があったようです。

.0以降should CIのデーモンを無効にしない

開発者のマシンと継続的インテグレーションサーバーの両方に[デーモン]を使用することをお勧めします。

ただし、デーモンがCIビルドを不安定にする疑いがある場合は、ランタイムが以前のビルドから完全に分離されているため、各ビルドに新しいランタイムを使用するためにデーモンを無効にすることができます。

前の回答

CIサーバーでdaemonをオフにすることをお勧めします 。このオプションを使用して無効にします

--no-daemon
34
Oleg Khalidov

このクラッシュを取得した後、CIサーバーでGradleDaemonの実行を停止するためにいくつかのことを試みました。どれも機能しませんでした。

Gradle.orgフォーラムで、GradleDaemonが常に実行されることを示唆する答えを見つけました。 --no-daemonフラグは、無期限に継続するのではなく、この特定のビルドで実行するだけです。

フォークを必要とするJVM引数を指定すると、Gradleは新しいJVMをフォークします。デーモンプロセスが必要かどうかに関係なく、実行されるクラスはGradleDaemonと呼ばれます。 --no-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ファイルに追加すると、そのエラーは表示されなくなりました。

14
MungoRae

メモリ関連の問題のようです。それにもかかわらず、Olegが示唆するようにデーモンを無効にすることは助けになるようです。

つかいます

org.gradle.daemon = false

gradle.properties

〜/ .gradleフォルダーまたはプロジェクトのフォルダーのいずれか。

参照: https://docs.gradle.org/current/userguide/gradle_daemon.html#sec:disabling_the_daemon

12
muthusuba

私たちのケースでは、CIサーバーが非ASCII文字(つまり、コミット作成者の名前)を含む環境変数を渡すことにより問題が発生しました。

Gradleプロパティにfile.encoding=utf-8を追加すると、すぐに問題が修正されました。

10
akru

それは全くばかげているので、誰もこれに遭遇することはできませんが...

私の問題はコミットメッセージに奇妙な文字が存在する ...絵文字を含むgitlabから以前のコミットメッセージをコピーし、通常の代わりにマージリクエストのタイトルに貼り付けました:bug:構文。

akruの答えは正しい方向に私を向けるのに役立ちました????

2
jacoballenwood
gradle -Dorg.gradle.jvmargs=-Xmx1536m assembleDebug

または、org.gradle.jvmargs=-Xmx1536mgradle.propertiesファイルに追加します。

2
HellenGo

Gradle build daemon disappeared unexpectedlyは、多くの場合、gradle自体またはJavaクラッシュさえ意味します。私の場合、それはJavaでした。バグレポートに記入: https://bugzilla.redhat.com/show_bug.cgi?id=1408857

次のような名前のファイルを見てください。hs_err_pid%p.logここで、%pは、gradleタスクを実行しているディレクトリのプロセスのPIDです。

更新: gradle自体の問題 のように見えます。私の場合、ネイティブjansiを使用しているためです。問題で提供された回避策:

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

--no-daemonソリューションを試しましたが、同じDaemonDisappearedExceptionでビルドが失敗し続けました。

Jenkinsを実行しているサーバーのRAMを増やすことでこれを解決しました。 AWS EC2では、EC2インスタンスタイプを増やす必要があり、その結果RAMが増加しました。

1
Mark Pazon

うわー、私の場合はAndroid St​​udioを閉じてから再び開くとうまくいき、エラーはなくなりました。 :)

1
Rahee

私の場合、Android studioプロジェクトをアップグレードし、コードを難読化するために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.
0
SamzSakerz

Windows 7でAndroid St​​udioを使用していて、このエラーが表示されました。私のために働いたのは、Windows TaskManagerからJava.exeを殺すことです。

0
SrikanthS

時々Build-> Clean Project worksを実行するだけです-他のgradleファイルの変更を始める前に試してみてください。

0
shellym