54

gradlew使用 Git将我的项目文件从我的 Windows 机器提交到远程仓库后,gradlew在我的 Linux 服务器上调用失败并显示以下消息:

/usr/bin/env: bash: 没有这样的文件或目录

发生了什么?

4

6 回答 6

97

问题的原因是 Windows 上的 Git 将行尾gradlew从 Unix 样式 (LF) 转换为 Windows 样式 (CRLF)。

您可以使用 关闭该自动转换git config core.autocrlf false

将行尾设置gradlew回 Unix 样式解决了这个问题。在Vim中,这是使用:set fileformat=unix.

于 2014-03-10T13:47:13.127 回答
60

这是因为 gradlew 文件具有 Windows 文件结尾。

您可以dos2unix使用apt-getyum通过运行安装:

sudo apt-get install dos2unix

sudo yum install -y dos2unix

然后用于dos2unix转换行尾

CRLFWindows 回车 + 换行

仅适用于 LFLinux LineFeed:

dos2unix ./gradlew

然后运行你gradlew的测试:

./gradlew clean -d
于 2017-02-24T16:41:52.170 回答
12

感谢您的回答,这些强调了当我在 Mac 上时 Windows 创建 gradlew 的问题。

为了解决这个问题,我从应用程序的目录中运行了以下命令:

gradle wrapper

这会创建(替换损坏的)一个 gradle 包装器,它可以工作!(注意它使用您的本地gradle安装来修复应用程序的包装)

于 2019-01-27T18:40:33.603 回答
2

要永久解决Linux 和 Mac 上的 Git 结帐问题

在您的 Git 存储库根目录中,添加一个.gitattributes以此内容命名的文件:

gradlew text eol=lf

更多信息:https ://git-scm.com/docs/gitattributes

PS:也适用于.sh使用此条目的文件:

*.sh text eol=lf

这些条目在结帐时工作,并将这些文件的行尾转换为LF.

于 2021-03-05T07:08:22.827 回答
1

一个供应商提供了一个gradlew带有 Windows 回车符的产品。gradlew在 vim 中打开会显示^M行尾。运行:e ++ff=dos删除了行尾并解决了这个问题。

根据https://vim.fandom.com/wiki/File_format

于 2019-11-26T06:31:36.950 回答
0

按照箭头然后确定,它适用于@macOS #BigSur在此处输入图像描述

于 2020-12-26T15:12:29.057 回答