运行 Gradle 测试时出现“Broken pipe”错误

9

我有一个关于在gradle中运行测试的问题。我知道在其他机器上我的gradle配置可以工作,但是在我的机器上不幸不能。我们有junit测试和testNG测试,当尝试执行它们时,都会产生类似以下的堆栈跟踪:

Could not write standard input into: Gradle Worker 1.
java.io.IOException: The pipe is being closed
    at java.io.FileOutputStream.writeBytes(Native Method)
    at java.io.FileOutputStream.write(FileOutputStream.java:318)
    at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
    at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140)
    at org.gradle.process.internal.streams.ExecOutputHandleRunner.run(ExecOutputHandleRunner.java:53)
    at org.gradle.internal.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.java:66)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:722)

这个错误会不断地出现,但是数字会不同(Gradle Worker 2、Gradle Worker 3等)。有人遇到过相似的问题吗?

我正在使用gradle 1.6。

编辑:我忘了说我正在使用gradle wrapper

编辑:切换到版本1.12后,我收到了错误信息:

Caused by: org.gradle.api.InvalidUserDataException: Could not create task '(custome taks name)': Unknown argument(s) in task definition: [mustRunAfter]
11:20:17.990 [ERROR] [org.gradle.BuildExceptionReporter]    at org.gradle.api.internal.project.taskfactory.TaskFactory.validateArgs(TaskFactory.java:147)
11:20:17.991 [ERROR] [org.gradle.BuildExceptionReporter]    at org.gradle.api.internal.project.taskfactory.TaskFactory.checkTaskArgsAndCreateDefaultValues(TaskFactory.java:134)
11:20:17.991 [ERROR] [org.gradle.BuildExceptionReporter]    at org.gradle.api.internal.project.taskfactory.TaskFactory.createTask(TaskFactory.java:72)

编辑:好的,我想我已经找到了导致这个问题的原因 - 是杀毒软件。当我禁用它时,脚本会稍微向前移动,但最终以以下方式结束:

org.gradle.messaging.remote.internal.ConnectException: Could not connect to server [e42b57ea-ced6-4bb6-9369-3186ab4983d6 port:63631, addresses:[/127.0.0.1, /0:0:0:0:0:0:0:1]]. Tried addresses: [/127.0.0.1, /0:0:0:0:0:0:0:1].
    at org.gradle.messaging.remote.internal.inet.TcpOutgoingConnector.connect(TcpOutgoingConnector.java:62)
    at org.gradle.messaging.remote.internal.hub.MessageHubBackedClient.getConnection(MessageHubBackedClient.java:35)
    at org.gradle.process.internal.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:54)
    at org.gradle.process.internal.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:35)
    at org.gradle.process.internal.child.ImplementationClassLoaderWorker.execute(ImplementationClassLoaderWorker.java:85)
    at org.gradle.process.internal.child.ImplementationClassLoaderWorker.execute(ImplementationClassLoaderWorker.java:41)
    at org.gradle.process.internal.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:43)
    at org.gradle.process.internal.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:32)
    at org.gradle.process.internal.launcher.BootstrapClassLoaderWorker.call(BootstrapClassLoaderWorker.java:46)
    at org.gradle.process.internal.launcher.BootstrapClassLoaderWorker.call(BootstrapClassLoaderWorker.java:32)
    at jarjar.org.gradle.process.internal.launcher.GradleWorkerMain.run(GradleWorkerMain.java:32)
    at jarjar.org.gradle.process.internal.launcher.GradleWorkerMain.main(GradleWorkerMain.java:37)
Caused by: java.net.ConnectException: Connection refused: connect

在谷歌上搜索这个错误并没有找到任何结果(只有一些旧的 Gradle 1.1 错误信息)。有人遇到过这种问题吗?

我会尝试使用最新的Gradle版本。 - Peter Niederwieser
2
1.12错误可能意味着在1.6中未被检测到的构建脚本中存在错误。 - Peter Niederwieser
5个回答

6

在运行测试类时,我遇到了相似的问题。 我能够构建项目,但无法运行,因此经过一些研究,我找到了一个解决方案,即从.gradle / cache文件夹中删除某些workerThread-jar。 我尝试了一下,对我有用。 您可以使用以下命令来解决此问题。

  1. 在终端中调用gradle test --info命令,

作为响应,我收到日志,其中搜索了

Gradle worker Daemon

键,以获取我的gradle-worker.jar的位置。通常在Windows中,您可以在以下位置找到它 C:\Users\.gradle\caches\\workerMain\gradle-worker.jar.

要解决此问题,一种方法是删除workerMain文件夹本身,然后运行测试类。


6

哇,经过一整天与Gradle的斗争,我认为我终于找到了问题的原因。罪魁祸首是杀毒软件 - COMODO。卸载它并安装另一个杀毒软件后,一切都开始正常工作了。所以所有使用Gradle的用户 - 请小心COMODO,即使禁用了,它在使用Gradle时也可能会引起问题。要注意 :)


1

您真的不需要禁用或删除COMODO防病毒软件。只需按照以下步骤操作:

  1. 进入COMODO客户端面板
  2. 在任务菜单下打开高级任务选项。
  3. 查看所有活动任务并选择被阻止的Gradle进程。
  4. 右键单击该任务,并选择“添加到信任文件”

0

在我的情况下,这里的其他答案都没有帮助。 我所需要做的是禁用 协程代理

  1. 打开设置文件-设置
  2. 构建... - 调试器 - 数据视图下选择Kotlin
  3. 勾选“禁用协程代理”复选框

enter image description here

或者,前往您的build.gradle文件并升级用于协程依赖项的版本。


0

我遇到了同样的错误,只不过它说的是Gradle Worker 2。我重新启动了命令行(PowerShell),然后尝试使用gradle再次构建,结果成功了。我已经更改了我的环境变量以指向项目所期望的Java版本,并没有想到要重新启动-不确定这是否与此有关。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接