无法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
(比如gradle
和wrapper
)之类的目录被忽略,这个覆盖就会起作用, 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这个链接
- Android Wear项目Gradle Sync失败
- 错误:没有这样的属性:GROUP for class:org.gradle.api.publication.maven.internal.ant.DefaultGroovyMavenDeployer
- 插件太旧,请更新到更新的版本,或设置ANDROID_DAILY_OVERRIDE环境variables
- Android Studio:检测到未注册的VCS根目录
- Gradle版本2.2是必需的。 当前版本是2.10
- 与Gradle组装时如何更改Android应用程序包名称?
- AAPT2编译失败:Android 3.0 Canary上无效的维度1
- Android Studio:Gradle – 构build失败 – 任务执行失败':dexDebug'
- 在Android 4上使用Android Studio的NoClassDefFoundError