gradlew出错:/usr/bin/env: bash: 没有那个文件或目录

59

我在Windows机器上使用Git将项目的gradlew文件提交到远程仓库后,在Linux服务器上调用gradlew时出现以下错误信息:

/usr/bin/env: bash: 没有那个文件或目录

发生了什么?

6个回答

106
问题的原因是在Windows上,Git将gradlew的行尾符从Unix风格(LF)转换为Windows风格(CRLF)。您可以使用git config core.autocrlf false关闭自动转换。将gradlew的行尾符设置回Unix风格即可解决问题。在Vim中,可以使用:set fileformat=unix来完成此操作。

1
@MatthiasBraun - 你好。我遇到了同样的问题。我有一个在Windows上使用Android Studio构建的Android项目。当我在我的MAC上导入时,我无法运行./gradlew clean或./gradlew build,因为我得到了= env:bash\r:没有这样的文件或目录。我尝试设置fileformat = unix但不起作用。 - Thiago
这并没有解决我的问题。我也在使用Windows。 - Martin Erlic
作为对Windows用户的额外帮助,可以在Notepad++中使用菜单项“编辑”->“EOL转换”->“Unix(LF)”来完成。 - Jeremy Mangas
这正是我的问题所在。我正在Windows机器和Macbook之间共享我的项目文件。 - Tarun Gupta
伟大的答案和救命之恩 - Obtice

66

这是因为gradlew文件使用了Windows的文件结束符。

您可以通过运行以下命令安装dos2unixapt-getyum

sudo apt-get install dos2unix

sudo yum install -y dos2unix

然后使用dos2unix将行尾转换为LF,从CRLF Windows 回车+换行符 转换到 LF Linux 换行符。

dos2unix ./gradlew

然后运行gradlew进行测试:

./gradlew clean -d

14

感谢解答,这些突出显示了问题是Windows创建gradlew的时候,我在使用Mac。

要解决这个问题,在应用程序的目录中运行以下命令:

gradle wrapper

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


这真的是一个答案吗?您能否提供更多关于您的答案与其他答案相比的信息? - Nils Werner
它从根目录运行gradle wrapper命令,而其他答案没有这样做。 - Blundell
1
无法工作...zsh: 找不到命令: gradle - Ali Yar Khan
你需要安装Gradle,比如 brew install gradle - Blundell

2
将其永久解决方法适用于 Linux 和 Mac 上的 Git 检出:
在您的根 Git 存储库目录中添加一个名为 .gitattributes 的文件,并填写以下内容:
gradlew text eol=lf

更多信息:https://git-scm.com/docs/gitattributes PS:对于使用以下条目的.sh文件也适用:
*.sh text eol=lf

这个条目在结账时起作用,并将这些文件的行尾转换为LF

1

一个供应商使用了带有Windows回车符的 gradlew 进行发货。在vim中打开 gradlew 后,显示出现了 ^M 行尾符。运行 :e ++ff=dos 命令可以去除行尾符并解决此问题。

根据https://vim.fandom.com/wiki/File_format网页所述。


0

跟随箭头然后点击确定,在 @macOS #BigSur 上有效输入图像描述


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接