【问题标题】:Gradle build failing after update更新后 Gradle 构建失败
【发布时间】:2021-04-06 23:02:14
【问题描述】:

在 gradle/gradlew 构建时出现异常。没有测试用例的构建是成功的。当我将 gradle 更新到 6.0.1 时发生这种情况

适用于 gradle 5.6/6.2 版本。

Could not write standard input to Gradle Test Executor 2.
java.io.IOException: The pipe is being closed
 at java.base/java.io.FileOutputStream.writeBytes(Native Method)
 at java.base/java.io.FileOutputStream.write(FileOutputStream.java:348)
 at java.base/java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:81)
 at java.base/java.io.BufferedOutputStream.flush(BufferedOutputStream.java:142)
 at org.gradle.process.internal.streams.ExecOutputHandleRunner.forwardContent(ExecOutputHandleRunner.java:68)
 at org.gradle.process.internal.streams.ExecOutputHandleRunner.run(ExecOutputHandleRunner.java:53)
 at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
 at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
 at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
 at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
 at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
 at java.base/java.lang.Thread.run(Thread.java:835)
Error: Could not find or load main class worker.org.gradle.process.internal.worker.GradleWorkerMain
Caused by: java.lang.ClassNotFoundException: worker.org.gradle.process.internal.worker.GradleWorkerMain

FAILURE: Build failed with an exception.

【问题讨论】:

  • 以前从未见过,但ClassNotFoundException 可能表明您的 Gradle 安装以某种方式损坏。如果您有一个工作版本,请尝试运行gradle wrapper 以重新生成包装脚本。如果它仍然不起作用,请尝试删除 $HOME/.gradle/wrapper/dists 中的损坏分布。
  • 有人发现问题了吗?我得到了这个,并清除 gradle 缓存,包装器没有帮助
  • 既然这是根本问题,你能不能把它突出一点:Caused by: java.lang.ClassNotFoundException: worker.org.gradle.process.internal.worker.GradleWorkerMain给出的答案也是合适的,所以如果它被接受就好了

标签: gradle intellij-idea build build.gradle gradlew


【解决方案1】:

我刚刚发生了这种情况,发现停止 gradle 守护进程为我解决了这个问题:

gradle --stop

./gradlew --stop

取决于您的设置(当您尝试再次构建时,守护程序会重新启动)。

【讨论】:

    【解决方案2】:

    我遇到了这个错误,我发现的一种方法是转储整个 $HOME/.gradle 缓存,然后重建项目。

    启动/停止 IntellijIDEA 和/或重建没有帮助。

    当运行低级测试用例由于不明原因开始失败时,你知道你已经在某个地方跳过了复杂性鲨鱼。

    当然,这发生在机器崩溃之后。但是还是……

    【讨论】: