使用Git将项目的gradlew
文件从我的Windows机器提交到远程仓库后,在我的Linux服务器上调用gradlew
失败并显示以下消息:
/ usr / bin / env:bash:没有这样的文件或目录
发生了什么事?
答案 0 :(得分:66)
问题的原因是Windows上的Git将gradlew
的行结尾从Unix样式(LF)转换为Windows样式(CRLF)。
您可以使用git config core.autocrlf false
关闭自动转换。
将gradlew
的行结尾设置回Unix样式可以解决问题。在Vim中,这是使用set fileformat=unix
完成的。
答案 1 :(得分:26)
这是因为gradlew文件具有Windows文件结尾。
您可以通过以下操作安装dos2unix
apt-get
或yum
:
sudo apt-get install dos2unix
sudo yum install -y dos2unix
然后使用dos2unix
转换行尾
CRLF
Windows CarriageReturn + LineFeed的
到 LF
仅限Linux LineFeed:
dos2unix ./gradlew
然后运行gradlew
进行测试:
./gradlew clean -d
答案 2 :(得分:1)
感谢您的回答,这些都突出表明问题是Windows在我使用Mac时创建了gradlew。
要解决此问题,请从应用程序的目录中运行命令:
gradle wrapper
这将创建(替换残破的)gradle包装器,该方法有效! (请注意,它使用您的本地gradle
安装来修复应用的包装程序)
答案 3 :(得分:1)
要永久解决 Linux 和 Mac 上的 Git 检出:
在您的根 Git 存储库目录中添加一个名为 .gitattributes
的文件,其中包含以下内容:
gradlew text eol=lf
更多信息:https://git-scm.com/docs/gitattributes
PS:也适用于使用此条目的 .sh
文件:
*.sh text eol=lf
条目在结帐时起作用,并将这些文件的行尾转换为 LF
。
答案 4 :(得分:0)
某供应商已将gradlew
随Windows回车一起寄出。在vim中打开gradlew
会显示^M
行的结尾。运行:e ++ff=dos
删除了行尾并解决了此问题。
答案 5 :(得分:0)