【发布时间】:2014-04-13 15:53:03
【问题描述】:
使用 Git 将我的项目的 gradlew 文件从我的 Windows 机器提交到远程存储库后,在我的 Linux 服务器上调用 gradlew 失败并显示以下消息:
/usr/bin/env: bash: 没有这样的文件或目录
发生了什么?
【问题讨论】:
使用 Git 将我的项目的 gradlew 文件从我的 Windows 机器提交到远程存储库后,在我的 Linux 服务器上调用 gradlew 失败并显示以下消息:
/usr/bin/env: bash: 没有这样的文件或目录
发生了什么?
【问题讨论】:
问题的原因是 Windows 上的 Git 将 gradlew 的行尾从 Unix 样式 (LF) 转换为 Windows 样式 (CRLF)。
您可以使用 git config core.autocrlf false 关闭该自动转换。
将 gradlew 的行尾设置回 Unix 样式解决了这个问题。在Vim 中,这是使用:set fileformat=unix 完成的。
【讨论】:
这是因为 gradlew 文件具有 Windows 文件结尾。
您可以通过运行安装dos2unix 和apt-get 或yum:
sudo apt-get install dos2unix
sudo yum install -y dos2unix
然后使用dos2unix 转换行尾
来自 CRLF Windows 回车 + 换行
到 LF 仅限 Linux LineFeed:
dos2unix ./gradlew
然后运行您的gradlew 进行测试:
./gradlew clean -d
【讨论】:
感谢您的回答,这些突出表明问题是 Windows 创建 gradlew,当我在 mac 上时。
为了解决这个问题,我从应用程序的目录中运行了命令:
gradle wrapper
这会创建(替换损坏的)一个 gradle 包装器,它可以工作! (注意它使用您本地的gradle install 来修复应用程序的包装)
【讨论】:
gradle wrapper cmd,而其他答案则不...
brew install gradle
要永久解决 Linux 和 Mac 上的 Git 结帐:
在您的 Git 存储库根目录中添加一个名为 .gitattributes 的文件,其中包含以下内容:
gradlew text eol=lf
更多信息:https://git-scm.com/docs/gitattributes
PS:也适用于使用此条目的.sh 文件:
*.sh text eol=lf
这些条目在结帐时起作用,并将这些文件的行尾转换为LF。
【讨论】:
供应商已发送带有 Windows 回车符的 gradlew。在 vim 中打开 gradlew 显示 ^M 行尾。运行 :e ++ff=dos 删除了行尾并解决了这个问题。
【讨论】: