wsl中gradle必须按linux方式安装,禁用windows路径和环境变量;推荐用sdkman!一键安装管理多版本,手动安装需确保gradle_home与gradle_user_home均指向wsl原生ext4路径(如/opt/gradle或/home/user/.gradle),避免/mnt/跨文件系统路径引发权限、锁和性能问题。

WSL里装Gradle不能直接套Windows那一套
WSL(尤其是WSL2)本质是Linux子系统,gradle必须按Linux方式安装,用Windows的GRADLE_HOME环境变量或.bat脚本路径会直接失效。别在WSL里试图复用Windows下解压的gradle-x.x-bin.zip目录——权限、换行符、路径分隔符全都不兼容。
推荐用SDKMAN!一键装Gradle(含多版本管理)
比手动下载+配置环境变量更可靠,尤其适合需要切换Gradle版本的场景(比如同时维护Android项目和Spring Boot项目)。执行以下命令即可:
curl -s "https://get.sdkman.io" | bash source "$HOME/.sdkman/bin/sdkman-init.sh" sdk install gradle 8.10 sdk use gradle 8.10
验证:gradle -v 应输出版本号,且which gradle 指向~/.sdkman/candidates/gradle/current/bin/gradle。
- 不用手动设
GRADLE_HOME:SDKMAN!自动处理 -
GRADLE_USER_HOME默认为~/.gradle,如需改路径(比如挂载到Windows盘避免WSL重装丢缓存),可加export GRADLE_USER_HOME=/mnt/d/.gradle到~/.bashrc - 避免用
sudo apt install gradle:Ubuntu源里的Gradle版本太旧(常为6.x),不支持Kotlin DSL或新插件
手动安装时GRADLE_USER_HOME必须指向Linux路径
如果坚持手动安装(比如要指定某个离线包),解压后必须确保所有路径都是Linux风格,且GRADLE_USER_HOME不能写/mnt/c/Users/xxx/.gradle这类跨文件系统路径——NTFS挂载点在WSL中I/O性能差,且可能触发文件锁或权限拒绝错误。
- 解压命令用
tar -xzf gradle-8.10-bin.tar.gz -C /opt/,不要用Windows解压工具再拷进WSL - 环境变量写进
~/.bashrc:export GRADLE_HOME=/opt/gradle-8.10,然后export PATH=$GRADLE_HOME/bin:$PATH -
GRADLE_USER_HOME建议设为/home/yourname/.gradle或/opt/gradle-repo,避开/mnt/前缀 - 运行
gradle --init前先chmod +x $GRADLE_HOME/bin/gradle,防止“Permission denied”
WSL里用IDEA或Android Studio要注意路径映射
IDEA本地跑在Windows上,但通过WSL终端执行gradle任务时,build.gradle里写的fileTree或copySpec路径若含Windows风格(如C:\temp),会在WSL里解析失败;反过来,WSL里gradle.properties写的org.gradle.jvmargs若引用/mnt/c/下的JDK,可能因权限或符号链接导致JVM启动失败。
- 统一用Linux路径写法:
src/main/resources而非src\main\resources - JDK路径优先用WSL内安装的OpenJDK(
/usr/lib/jvm/java-17-openjdk-amd64),别硬链/mnt/c/Program Files/Java - Android Studio的Gradle JDK设置里,选“Embedded JDK”或WSL内的JDK路径,别选Windows路径
GRADLE_USER_HOME的文件系统归属——它得落在ext4分区上,否则.gradle/caches反复卡住、Could not create service of type FileSystemTracker这类错误就不是配错环境变量,而是底层文件系统不支持inotify或POSIX锁。











