无法find或加载主类org.gradle.wrapper.GradleWrapperMain

我通过在Android Studio中删除~/.gradle~/.gradle ~./android~/workspace/project/.gradle等本地目录并selectFile -> Invalidate Caches / Restart...来清理整个项目。 现在执行命令./gradlew会导致以下输出:

 usr$ ./gradlew tasks Error: Could not find or load main class org.gradle.wrapper.GradleWrapperMain 

不用说,我删掉了太多,问题是怎么能再修复? 你有什么想法如何解决这个问题?

gradlew是gradle wrapper可执行文件 – 在其他地方的windows和shell脚本上的批处理脚本。 如果在build.gradle包含以下行,

 task wrapper(type: Wrapper) { gradleVersion = '2.0' } 

一个gradle包装脚本被添加到你的源文件夹中。 包装脚本被调用时,下载定义的gradle版本,并执行它。 通过分发你的项目包装,任何人都可以使用它,而无需事先安装Gradle。 更好的是,构build的用户保证使用构build被devise用于的Gradle版本。

在你的删除中,你删除了gradlew依赖的东西。 你可以从你的源代码仓库中取出gradlew文件,或者如果你安装了gradle,运行gradle wrapper来恢复它。

ref: Gradle Wrapper

除了@ RaGe的答案可能是我面临的情况,我有一个全球性的git忽略忽略.jar文件,所以gradle包装jar从未被提交。 因此,在尝试/var/lib/jenkins/my_project/gradlew build之后,我在Jenkins服务器上发生了这个错误。 我不得不明确强制添加的jar然后提交:

 git add -f gradle/wrapper/gradle-wrapper.jar 

就我而言,这是一个全球性的.gitignore , 正如HankCa的回答所解释的 。

而不是强制添加jar,你需要记住在每个Gradle项目中,我添加了一个覆盖重新包括在我的全局.gitignore的包装jar:

 *.jar !gradle/wrapper/gradle-wrapper.jar 

这对我很有用,因为我有很多使用Gradle的项目; Git现在提醒我包括包装jar。

只要没有gradle-wrapper.jar (比如gradlewrapper )之类的目录被忽略,这个覆盖就会起作用, git不会因为性能的原因而下降到忽略的目录 。

您也可以将gradlew.bat复制到您的根文件夹中,并将gradlew-wrapper复制到gradlew文件夹中。

这对我有用。

在我的情况下(使用Windows 10)gradlew.bat有以下几行代码:

 set DIRNAME=%~dp0 if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% 

APP_HOMEvariables实质上是项目的阶梯根文件夹,所以,如果以某种方式搞砸了,你将得到:

错误:无法find或加载主类org.gradle.wrapper.GradleWrapperMain

对我来说,这已经搞乱了,因为我的项目文件夹结构中有&符号(&)。 例如C:\ Test&Dev \ MyProject

所以,gradel试图在C:\ Test的根文件夹中findgradle-wrapper.jar文件(剥离包括'&'之后的所有内容)

我通过在上面设置的APP_HOME =%DIRNAME%行下面添加以下行来find这个结果。 然后运行bat文件来查看结果。

 echo "%APP_HOME%" 

将会有一些其他的“特殊字符”,可能会打破path/目录。

@HankCa也解决了我的情况。 我决定把我的危险**/*.jar忽略改为像src/**/lib/*.jar这样的不言自明的types,以避免将来出现这样的问题。 忽略从** / *开始有点太危险,至less对我来说。 通过查看一下.gitignore行后面的想法总是一个好主意。

什么对我来说是第一次运行:

  gradle wrapper 

成功构build后,我能够运行

 ./gradlew assembleRelease 

来源和感谢: http : //gradle.org/docs/current/userguide/gradle_wrapper.html和https://stackoverflow.com/users/745574/rage

错过了gradle-wrapper.jar目录下的gradle / wrapper项目。

你需要通过这个脚本在build.gradle文件中生成这个文件,如下所示,

 task wrapper(type: Wrapper) { gradleVersion = '2.0' // version required } 

并运行任务:

 gradle wrapper 

使用Gradle 2.4(或更高版本),您可以设置一个包装器,而无需添加专门的任务:

 gradle wrapper --gradle-version 2.3 

要么

 gradle wrapper --gradle-distribution-url https://myEnterpriseRepository:7070/gradle/distributions/gradle-2.3-bin.zip 

所有的细节可以find这个链接