Windows环境下Gradle任务因WSL路径配置问题执行异常
问题原因及解决方案
核心原因
你遇到的问题根源是Gradle调用的bash并非你日常使用的Git Bash,而是WSL(Windows子系统Linux)的bash。两者的路径映射规则完全不同:
- Git Bash将Windows盘符(如
G:)映射为/g格式; - WSL则把Windows盘符映射为
/mnt/g格式,且WSL的bash无法直接识别Git Bash风格的/g路径,反之亦然。
卸载WSL后,系统找不到默认关联的bash程序,因此抛出了WSL发行版未安装的错误。
解决方案
1. 直接指定Git Bash的完整路径(推荐)
修改Gradle任务,明确调用Git Bash的bash.exe,而非系统默认的bash。Git Bash通常安装在C:\Program Files\Git\bin\bash.exe,调整后的任务代码如下:
task paths(type: Exec) { workingDir 'G:/WS/ws-shared' commandLine 'C:/Program Files/Git/bin/bash.exe', './src/test/java/javaToJs/paths.sh' }
若你的Git安装路径不同,替换为对应bash.exe的实际路径即可。
2. 调整系统PATH优先级
将Git Bash的bin目录(如C:\Program Files\Git\bin)移到系统PATH的最前端,让系统优先识别Git Bash的bash,而非WSL的关联程序:
- 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
- 在系统变量的
Path列表中,把Git Bash的bin目录条目上移至WSL相关条目(如C:\Windows\System32)之前
3. 在脚本中适配路径格式(临时方案)
若不想修改Gradle任务或系统PATH,可在paths.sh中添加路径转换逻辑,自动将WSL风格的/mnt/g转换为Git Bash风格的/g:
#!/bin/bash # 适配WSL到Git Bash的路径转换 if [[ "$JAVA_HOME" == /mnt/* ]]; then JAVA_HOME=$(echo "$JAVA_HOME" | sed 's/\/mnt\/\([a-z]\)/\/\1/') fi echo "Current working directory: $(pwd)" echo "JAVA_HOME: $JAVA_HOME" echo "Accessing path: $JAVA_HOME/bin/java" ls -l "$JAVA_HOME/bin/java" || echo "Failed to access java"
内容的提问来源于stack exchange,提问作者rupweb
相关产品推荐
相关产品推荐

