【问题标题】:Broken pipe error when running Gradle test运行 Gradle 测试时出现断管错误
【发布时间】:2014-07-03 07:55:35
【问题描述】:

我在 gradle 中运行测试时遇到了问题。我知道在其他机器上我的 gradle 配置可以工作,但不幸的是在我的机器上不行。我们有 junit test 和 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 包装器

编辑:更改为 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 版本。
  • 1.12 错误可能意味着构建脚本中存在一个在 1.6 中未被检测到的错误。

标签: java unit-testing gradle testng


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    Gradle worker 守护进程

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

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

    【讨论】:

    • 你拯救了我的一天。非常感谢
    【解决方案3】:

    您确实不需要禁用或删除 COMODO Antivirus。只需执行以下步骤:

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

    【讨论】:

      【解决方案4】:

      我得到了同样的错误,除了它说 Gradle Worker 2。我重新启动了我的命令行 (powershell),然后尝试用 gradle 再次构建它并且它工作。我已将环境变量更改为指向项目所期望的 Java 版本,并且没有考虑重新启动 - 不确定这是否与它有关。

      【讨论】:

        【解决方案5】:

        这里的其他答案对我的情况都没有帮助。 我必须做的是禁用协程代理

        1. 打开设置文件 - 设置
        2. Build... - Debugger - Data Views 下选择 Kotlin
        3. 选中“禁用协程代理”复选框

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

        【讨论】:

          猜你喜欢
          • 2015-07-17
          • 2011-01-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-06
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多