java - 运行 Gradle 测试时出现 Broken pipe 错误

标签 java unit-testing gradle testng

我遇到了关于在 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 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 斗争了一整天之后,我想我终于找到了导致问题的原因。罪魁祸首是杀毒软件 - COMODO。卸载它并安装另一个后,一切开始正常工作。所以所有 Gradle 用户 - 请小心使用 COMODO,因为即使禁用它,在使用 Gradle 时也可能会导致问题。注意:)

关于java - 运行 Gradle 测试时出现 Broken pipe 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24548085/

相关文章:

java - Arraylist 不适用于 Android

javascript - 当我尝试运行测试时出现笑话

unit-testing - 如何在天蓝色的Devops中安装Cobertura?

java - 好的java分词器吗?

java - 澄清java中private和public的含义和功能

java - 制作多副纸牌 Java

java - 使用 JMockit,如何模拟特定输入参数值的接口(interface)方法?

android-studio - 如何动态生成 Java 源代码以在 Android Studio 中使用 Gradle 进行构建?

gcc - 如何为C项目获取Gradle “cpp”插件以使用gcc而不是g++?

gradle - 使用Lateast gradle获取此警告:API 'variant.getMergeAssets()'已过时,已被 'variant.getMergeAssetsProvider()'取代