SeP*_*läm 140 gradle gradlew android-studio android-gradle-plugin
我通过删除本地目录等清洗整个项目~/.gradle
,~/.m2
~./android
并~/workspace/project/.gradle
和艇员选拔File -> Invalidate Caches / Restart...
Android Studio中.现在执行命令./gradlew
会导致以下输出:
usr$ ./gradlew tasks
Error: Could not find or load main class org.gradle.wrapper.GradleWrapperMain
Run Code Online (Sandbox Code Playgroud)
不用说,我删了太多,问题是如何再次修复?你有任何想法如何解决这个问题?
Han*_*kCa 181
除了@ RaGe的回答可能是我遇到的情况,我有一个忽略.jar
文件的全局git忽略,所以gradle包装jar从未被提交.因此,尝试后我在Jenkins服务器上收到了该错误/var/lib/jenkins/my_project/gradlew build
.我必须显式强制添加jar然后提交:
git add -f gradle/wrapper/gradle-wrapper.jar
Run Code Online (Sandbox Code Playgroud)
RaG*_*aGe 101
gradlew
是gradle包装器可执行文件 - windows上的批处理脚本和其他地方的shell脚本.如果您在其中包含以下行build.gradle
,
task wrapper(type: Wrapper) {
gradleVersion = '4.1'
}
Run Code Online (Sandbox Code Playgroud)
gradle包装器脚本将添加到源文件夹中.调用时的包装脚本,下载已定义的gradle版本并执行它.通过在项目中分发包装器,任何人都可以使用它而无需事先安装Gradle.更好的是,构建的用户可以保证使用构建旨在使用的Gradle版本.
在删除中,您删除了gradlew所依赖的内容.您可以从源代码库中仅提取gradlew文件,或者如果已安装gradle文件gradle wrapper
以恢复它.
ref:Gradle Wrapper
Ale*_*mer 38
就我而言,它是一个全球性的.gitignore
,正如@ HankCa的回答所解释的那样.
我没有强行添加你需要记住在每个Gradle项目中执行的jar,而是添加了一个覆盖来重新包含我的全局中的包装jar .gitignore
:
*.jar
!gradle/wrapper/gradle-wrapper.jar
Run Code Online (Sandbox Code Playgroud)
这对我很有用,因为我有很多使用Gradle的项目; Git现在会提醒我包含包装罐.
只要没有上面的目录gradle-wrapper.jar
(例如gradle
和wrapper
)被忽略,这个覆盖就会起作用- 出于性能原因,git不会进入被忽略的目录.
小智 29
对我有用的是首先运行:
gradle wrapper
Run Code Online (Sandbox Code Playgroud)
成功构建后,我能够运行
./gradlew assembleRelease
Run Code Online (Sandbox Code Playgroud)
来源和感谢:http://gradle.org/docs/current/userguide/gradle_wrapper.html和/sf/users/52190211/
yan*_*taq 17
在我的情况下,我wrapper在复制gradle文件夹时遗漏了子文件夹并得到了同样的错误.
无法找到或加载主类org.gradle.wrapper.GradleWrapperMain
如果从其他位置复制包装器,请确保您具有正确的文件夹结构.
??? build.gradle ??? gradle ? ??? wrapper ? ??? gradle-wrapper.jar ? ??? gradle-wrapper.properties ??? gradlew ??? gradlew.bat ??? settings.gradle
Ali*_*ram 14
我刚刚gradle-wrapper.jar
从路径中复制了我以前的项目之一/android/gradle/wrapper
,并将其粘贴到同一路径上的应用程序中/android/gradle/wrapper
,并且效果完美。
镇静丸:)
小智 8
当我遇到这个问题时,我遵循了上面的答案。如果您遇到此问题,请确保强制推送 jar 和属性文件。在这两个之后,我停止了这个问题。
git add -f gradle/wrapper/gradle-wrapper.jar
git add -f gradle/wrapper/gradle-wrapper.properties
Run Code Online (Sandbox Code Playgroud)
您的项目gradle-wrapper.jar
目录下可能缺少文件gradle/wrapper
。
您需要通过以下build.gradle文件中的脚本来生成此文件,
task wrapper(type: Wrapper) {
gradleVersion = '2.0' // version required
}
Run Code Online (Sandbox Code Playgroud)
并运行任务:
gradle wrapper
Run Code Online (Sandbox Code Playgroud)
使用gradle 2.4(或更高版本),您可以设置包装器,而无需添加专用任务:
gradle wrapper --gradle-version 2.3
Run Code Online (Sandbox Code Playgroud)
要么
gradle wrapper --gradle-distribution-url https://myEnterpriseRepository:7070/gradle/distributions/gradle-2.3-bin.zip
Run Code Online (Sandbox Code Playgroud)
所有详细信息都可以在此链接中找到
我看到了同样的错误,但就我而言,这是一个全新的 Git 安装,没有安装 LFS。有问题的存储库是使用 LFS 设置的,并且 gradle-wrapper.jar 位于 LFS 中,因此它只包含指向 LFS 服务器的指针。解决方案很简单,只需运行:
git lfs install
Run Code Online (Sandbox Code Playgroud)
一个新的克隆成功了。我想git lfs pull
或者只是一个git pull
也可以提供帮助,但有问题的人决定做一个新的克隆。
问题陈述很简单,它无法找到可执行的主类文件。
\n如果您在项目中使用 gradle 包装器,则应该具有如下结构
\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 gradle\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 wrapper\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 gradle-wrapper.jar\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 gradle-wrapper.properties\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 gradlew\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 gradlew.bat\n
Run Code Online (Sandbox Code Playgroud)\n当您执行 ./gradlew 时,它会查找类路径,并根据 gradlew 或 gradlew.bat 中的代码,有一行将 gradle-wrapper.jar 添加到类路径
\nCLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
\n现在,就我而言,.gitignore 中有一个条目为 *.jar,它在第一次提交时也排除了 gradle-wrapper.jar。
\n因此,要恢复文件,您必须执行以下任务
\ngradle wrapper\n
Run Code Online (Sandbox Code Playgroud)\n如果您没有使用最新的 gradle 版本,那么您必须在 build.gradle 中有一个包装器任务,如下所示。这定义了哪个 gradle 版本将捆绑在包装器中。对于最新版本的 gradle,包装器任务是隐式的。
\ntask wrapper(type: Wrapper) {\n gradleVersion = \'4.8\' \n //change this as per your project. Refer to distributionUrl in gradle-wrapper.properties to confirm the version\n}\n
Run Code Online (Sandbox Code Playgroud)\n执行任务后,将下载 gradle-wrapper-4.8.jar 并将其放入 gradle/wrapper 文件夹中(如上面的树结构中所述)。将文件重命名为 gradle-wrapper.jar
\n但是,由于 *.jar 被排除在 .gitignore 文件中,我仍然无法将其签入并存储在 github 中。
\n因此,在 .gitignore 文件中添加以下行,以将 gradle-wrapper.jar 由于 *.jar 而从忽略的 jar 列表中排除。
\n!gradle-wrapper.jar\n
Run Code Online (Sandbox Code Playgroud)\nGit 实际上已经共享了所有编程语言的示例 .gitignore 文件。
\n请参考gradle和java
\n在我的情况下(使用 Windows 10) gradlew.bat 有以下几行代码:
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
Run Code Online (Sandbox Code Playgroud)
APP_HOME 变量本质上是项目的 gradles 根文件夹,因此,如果这以某种方式搞砸了,您将获得:
错误:无法找到或加载主类 org.gradle.wrapper.GradleWrapperMain
对我来说,这已经搞砸了,因为我的项目文件夹结构中有一个与号 (&)。例如 C:\Test&Dev\MyProject
因此,gradel 试图在 C:\Test 的根文件夹中找到 gradle-wrapper.jar 文件(去掉包括“&”之后的所有内容)
我通过在上面的 set APP_HOME=%DIRNAME% 行下面添加以下行来发现这一点。然后运行bat文件查看结果。
echo "%APP_HOME%"
Run Code Online (Sandbox Code Playgroud)
还有一些其他“特殊字符”可能会破坏路径/目录。
归档时间: |
|
查看次数: |
116585 次 |
最近记录: |