gradle 命令失败,因为它无法启动守护进程

Posted

技术标签:

【中文标题】gradle 命令失败,因为它无法启动守护进程【英文标题】:gradle command is failing as it is not able to start daemon 【发布时间】:2016-01-19 00:40:20 【问题描述】:

我正在尝试运行 gradle 命令。这最初是有效的。但是它在一段时间后开始失败,因为它无法启动守护进程。我在 Windows 7 Enterprise 上使用带有 IBM jdk 1.6 的 Gradle 2.5。

我已经清理了我的用户主目录中的 .gradle 目录并重新启动了我的系统。

这在我朋友的机器上运行良好,版本相同。 请帮忙。

org.gradle.api.GradleException:无法启动 Gradle 守护程序。 在 org.gradle.launcher.daemon.client.DefaultDaemonStarter.startProcess(DefaultDaemonStarter.java:137) 在 org.gradle.launcher.daemon.client.DefaultDaemonStarter.startDaemon(DefaultDaemonStarter.java:114) 在 org.gradle.launcher.daemon.client.DefaultDaemonConnector.startDaemon(DefaultDaemonConnector.java:109) 在 org.gradle.launcher.daemon.client.DefaultDaemonConnector.connect(DefaultDaemonConnector.java:87) 在 org.gradle.launcher.daemon.client.DaemonClient.execute(DaemonClient.java:117) 在 org.gradle.launcher.daemon.client.DaemonClient.execute(DaemonClient.java:77) 在 org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:40) 在 org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:170) 在 org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:23 7) 在 org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:21 0) 在 org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:35) 在 org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24) 在 org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:206) 在 org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169) 在 org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33) 在 org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22) 在 org.gradle.launcher.Main.doAction(Main.java:33) 在 org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) 在 java.lang.reflect.Method.invoke(Method.java:611) 在 org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:54) 在 org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:35) 在 org.gradle.launcher.GradleMain.main(GradleMain.java:23) 引起:org.gradle.api.UncheckedIOException: java.io.EOFException 在 org.gradle.launcher.daemon.bootstrap.DaemonStartupCommunication.readDiagnostics(DaemonStartupCommunication.ja 弗吉尼亚州:100) 在 org.gradle.launcher.daemon.bootstrap.DaemonGreeter.parseDaemonOutput(DaemonGreeter.java:40) 在 org.gradle.launcher.daemon.client.DefaultDaemonStarter.startProcess(DefaultDaemonStarter.java:133) ... 24 更多 引起:java.io.EOFException 在 java.io.DataInputStream.readBoolean(DataInputStream.java:238) 在 org.gradle.internal.serialize.InputStreamBackedDecoder.readBoolean(InputStreamBackedDecoder.java:47) 在 org.gradle.internal.serialize.AbstractDecoder.readNullableString(AbstractDecoder.java:53) 在 org.gradle.launcher.daemon.bootstrap.DaemonStartupCommunication.readDiagnostics(DaemonStartupCommunication.ja 弗吉尼亚州:85) ... 26 更多

【问题讨论】:

【参考方案1】:

不确定您的场景(以及 IBM jdk),但每当守护程序或任何其他正常工作的构建突然停止为我工作时,我会尝试两件事。

    gradle myTask --no-daemon 在没有守护程序的情况下运行构建,以确保它是否确实是守护程序的问题。

    gradle --stop 杀死任何现有的守护进程,然后再次尝试构建。

gradle docs 中有一个关于在 Windows 上使用守护进程的警告:

还可能通过运行未正确释放资源的构建来破坏守护进程(以及一般的构建环境)。在使用 Microsoft Windows 时,这是一个特别尖锐的问题,因为它不太容忍在读取或写入后无法关闭文件的程序。

【讨论】:

感谢您的回复。当我尝试运行 gradle --no-daemon 时,它可以工作。 gradle --stop 正在停止挂起的守护进程,但不能解决问题。我仍然需要使用--no-daemon。 Oracle JDK 现在也在发生这种情况。它昨天工作,今天重新启动我的机器后它给出了同样的问题。 所以问题不在于 jdk 或您的构建脚本。它是 Windows 上的 gradle 守护程序,在 Windows 上可能不稳定。您能否查看您的代码是否正确释放文件(在finally 块中)。您可以创建一个示例项目重现问题并在此处记录问题:issues.gradle.org【参考方案2】:

我最初使用提供的tar.gz build 中的JDK 9.0.4。作为我收到的日志输出:

org.gradle.api.GradleException: Could not start Gradle daemon

JDK 9.0.4 的exe installation package 安装完成后,错误信息就完成了。

【讨论】:

【参考方案3】:

我在运行 gradle 任务时遇到了同样的问题。删除 gradle 缓存 (~/.gradle/cache) 解决了..!!

【讨论】:

以上是关于gradle 命令失败,因为它无法启动守护进程的主要内容,如果未能解决你的问题,请参考以下文章

FAILURE构建失败,但有异常

Jenkins 使用 Gradle 守护进程构建失败

android studio错误:无法启动守护程序进程

Gradle 构建挂起没有失败,DefaultFileLockManager 获取和释放守护进程地址注册表上的锁定

Gradle命令行操作

Android Studio:无法启动守护进程