WSL中执行./gradle test报错:无法创建ChecksumService服务
./gradle test遇IO错误的排查思路 错误信息
Could not create an instance of type org.gradle.api.internal.initialization.DefaultScriptHandler.
Could not create service of type ChecksumService using BuildSessionScopeServices.createChecksumService().
java.io.IOException: Input/output error
以下是针对性排查思路:
迁移项目到WSL原生文件系统
若项目放在Windows挂载路径(如/mnt/c),可能存在IO兼容性或权限问题。将项目移动到WSL原生路径(如/home/your-username/project-dir),再重新执行./gradle test。修复文件权限
检查项目文件权限,执行ls -l确认当前用户拥有读写权限。若权限异常,运行sudo chown -R $USER:$USER /path/to/your/project修正。清理Gradle缓存
删除本地Gradle缓存目录:rm -rf ~/.gradle/caches,之后重新运行测试;也可尝试跳过构建缓存执行:./gradle clean test --no-build-cache。检查WSL资源占用
- 用
free -h查看内存是否不足,若内存紧张,编辑Windows用户目录下的.wslconfig文件(无则新建),添加WSL内存限制:
执行[wsl2] memory=4GBwsl --shutdown重启WSL后再测试。 - 用
df -h检查磁盘剩余空间,确保对应分区有足够空间运行测试。
- 用
切换Gradle执行方式
若项目包含gradlew脚本,改用./gradlew test执行,避免系统级Gradle版本冲突;也可临时指定兼容的Gradle版本运行测试。调整WSL挂载配置
编辑WSL的/etc/wsl.conf文件(无则新建),添加挂载参数优化文件系统交互:[automount] options = "metadata,umask=22,fmask=11"执行
wsl --shutdown重启WSL后生效,再尝试运行测试。
内容的提问来源于stack exchange,提问作者Lady_Hangaku

