Android Studio执行gradlew构建时遇IO异常及测试任务失败求助
解决Gradle Test Executor执行时的"找不到主类"错误
错误日志
Could not write standard input to Gradle Test Executor 1. 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:349) 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.writeBuffer(ExecOutputHandleRunner.java:98) at org.gradle.process.internal.streams.ExecOutputHandleRunner.forwardContent(ExecOutputHandleRunner.java:85) at org.gradle.process.internal.streams.ExecOutputHandleRunner.run(ExecOutputHandleRunner.java:64) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:47) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:840) > Task :app:testDebugUnitTest FAILED Error: Could not find or load main class Files\nodejs;.;C:\MyProjects\rtr05-083\MyAndroid\01-IDE\app\src\testDebug\jniLibs;C:\MyProjects\rtr05-083\MyAndroid\01-IDE\app\src\test\jniLibs Caused by: java.lang.ClassNotFoundException: Files\nodejs;/;C:\MyProjects\rtr05-083\MyAndroid\01-IDE\app\src\testDebug\jniLibs;C:\MyProjects\rtr05-083\MyAndroid\01-IDE\app\src\test\jniLibs FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:testDebugUnitTest'. > Process 'Gradle Test Executor 1' finished with non-zero exit value 1 * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. > Get more help at https://help.gradle.org. BUILD FAILED in 38s 78 actionable tasks: 78 executed
问题分析
错误核心是系统CLASSPATH环境变量包含未加引号的带空格路径,比如C:\Program Files\nodejs,Gradle解析时会把空格后的Files\nodejs误识别为主类名,导致ClassNotFoundException。
解决方案
修复系统CLASSPATH环境变量
- 打开系统环境变量设置:右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
- 在「系统变量」中找到
CLASSPATH,检查其值里的路径 - 给所有带空格的路径添加双引号,例如将
C:\Program Files\nodejs修改为"C:\Program Files\nodejs" - 保存设置后,重启Android Studio和终端,重新执行构建
临时跳过系统CLASSPATH(无需修改环境变量)
在终端执行构建命令前,临时清空CLASSPATH:set CLASSPATH= && gradlew clean testDebugUnitTest或PowerShell:
$env:CLASSPATH = ""; ./gradlew clean testDebugUnitTest额外排查步骤
- 检查项目
build.gradle中test相关配置,确认jniLibs路径未被错误设置 - 清理Gradle缓存并重新同步:执行
gradlew clean build --refresh-dependencies
- 检查项目
内容的提问来源于stack exchange,提问作者Guava
相关产品推荐
相关产品推荐

