私は~/.gradle
、~/.m2
、~./Android
および~/workspace/project/.gradle
のようなローカルディレクトリを削除し、Android StudioでFile -> Invalidate Caches / Restart...
を選択することによってプロジェクト全体をきれいにしました。コマンド./gradlew
を実行すると、次のような出力が表示されます。
usr$ ./gradlew tasks
Error: Could not find or load main class org.gradle.wrapper.GradleWrapperMain
言うまでもなく、私はあまりにも多く削除しました、問題はそれが再びどのように修理されることができるかということですか?これを修正する方法がありますか。
gradlew
は、グラドルラッパーの実行可能ファイルです。Windows上のバッチスクリプトおよび他の場所にあるシェルスクリプトです。 build.gradle
に次の行を含めると、
task wrapper(type: Wrapper) {
gradleVersion = '2.0'
}
グラドルラッパースクリプトがソースフォルダに追加されます。ラッパースクリプトが呼び出されると、定義されているgradleバージョンをダウンロードして実行します。プロジェクトと一緒にラッパーを配布することで、誰でも事前にGradleをインストールする必要なしにそれで作業することができます。さらに良いことに、ビルドのユーザーはビルドが動作するように設計されたバージョンのGradleを使うことが保証されています。
あなたの削除の中で、あなたはgradlewが依存しているものを削除しました。ソースリポジトリからgradlewファイルだけを取り出すことも、gradleがインストールされている場合はgradle wrapper
を実行して復元することもできます。
ref: Gradle Wrapper
@ RaGeの答えに加えて、私は.jar
ファイルを無視していたグローバルなgit ignoreがあり、そのためgradle wrapper jarが決してコミットされていなかった状況に直面したかもしれません。そのため、私はJenkinsサーバで/var/lib/jenkins/my_project/gradlew build
を試みた後にこのエラーが発生していました。明示的にjarを追加してからコミットする必要がありました。
git add -f gradle/wrapper/gradle-wrapper.jar
私の場合は、グローバルな.gitignore
でした @ HankCaの答えで説明されているように 。
各Gradleプロジェクトで忘れずにjarを追加するのではなく、グローバル.gitignore
にラッパーjarを再度含めるためのオーバーライドを追加しました。
*.jar
!gradle/wrapper/gradle-wrapper.jar
Gradleを使ったプロジェクトがたくさんあるので、これは私にとって役に立ちます。 Gitは、ラッパージャーを含めるように私に思い出させます。
gradle-wrapper.jar
より上のディレクトリ(gradle
やwrapper
など)が無視されない限り、このオーバーライドは機能します - gitはパフォーマンス上の理由で無視されたディレクトリに下降しません 。
私にとってうまくいったのは、最初に実行することです。
gradle wrapper
正常にビルドされた後、私は実行することができました
./gradlew assembleRelease
ソースと感謝: http://gradle.org/docs/current/userguide/gradle_wrapper.html and https://stackoverflow.com/users/745574/rage
私の場合、取り残した wrapper コピー中のサブフォルダー gradle フォルダと同じエラーを得た。
メインクラスorg.gradle.wrapper.GradleWrapperMainが見つからないか、読み込めませんでした
他の場所からラッパーをコピーする場合は、正しいフォルダー構造があることを確認してください。
├──build.gradle ├──gradle │└──wrapper │├──gradle-wrapper.jar │ └──gradlewrapper.properties ├──gradlew ├──gradlew.bat └──settings.gradle
あなたはおそらくあなたのプロジェクトのディレクトリ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
OR
gradle wrapper --gradle-distribution-url https://myEnterpriseRepository:7070/gradle/distributions/gradle-2.3-bin.Zip
すべての詳細は見つけることができます このリンク
gradlew.batをルートフォルダにコピーし、gradlew-wrapperをgradlewフォルダにコピーすることもできます。
それは私の仕事です。
私はこれに遭遇したとき私は上からの答えに従った。そして、あなたがこの問題を抱えているのであれば、jarとpropertiesファイルの両方をプッシュすることを忘れないでください。この2つの後、私はこの問題を解決するのをやめました。
git add -f gradle/wrapper/gradle-wrapper.jar
git add -f gradle/wrapper/gradle-wrapper.properties
私の場合(windows 10を使用)、gradlew.batには次のコード行があります。
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
APP_HOME変数は基本的にプロジェクトのグラデーションルートフォルダです。したがって、これが何らかの形で乱れている場合は、次のようにします。
エラー:メインクラスorg.gradle.wrapper.GradleWrapperMainが見つからないか、読み込めませんでした。
私の場合、プロジェクトのフォルダ構造にアンパサンド(&)が含まれていたため、これはめちゃくちゃになっていました。例えばC:\ Test&Dev\MyProject
そのため、gradelは、C:\ Testのルートフォルダでgradle-wrapper.jarファイルを見つけようとしていました( '&'を含むすべての部分を削除)
これを見つけるには、上記のAPP_HOME =%DIRNAME%行の下に次の行を追加します。その後、結果を確認するためにbatファイルを実行しました。
echo "%APP_HOME%"
パス/ディレクトリを壊す可能性のある他のいくつかの「特殊文字」があるでしょう。
Gradle 5.xでは、次を使用します。
wrapper {
gradleVersion = '5.5.1'
}
私は次の修正でこの問題を修正しました(多分それは誰かに役立つでしょう)。
プロジェクトフォルダの親フォルダに、スペースや他の禁止された文字が含まれているかどうかを確認してください。もしそうなら - それを削除します。
"C:¥Users¥someuser¥Test Projects¥testProj" - この場合、 "Test Projects"は "TestProjects"になります。
私の場合はgradle-wrapper.jarがたくさんのファイルを置き換えた後に壊れてしまいました。元の状態に戻すと問題は解決しました。
私の場合も@HankCaが問題を解決しました。私は自分の危険な**/*.jar
無視をsrc/**/lib/*.jar
のような自明のものに変更することにしました。 **/*で始まる無視は少々危険ですが、少なくとも私にとっては危険です。それを見ているだけで、.gitignore行の背後にあるアイデアを取得することは常に良いアイデアです。
私は同じエラーを見ましたが、私の場合は、LFSがインストールされていない新しいGitインストールでした。問題のレポジトリはLFSで設定され、gradle-wrapper.jarはLFSにあったため、LFSサーバーへのポインタのみが含まれていました。ソリューションは簡単で、実行するだけです。
git lfs install
そして、新しいクローンがトリックを行いました。 git lfs pull
またはgit pull
だけでも助けられたと思いますが、問題のある人は代わりに新しいクローンを作成することにしました。
新しいプロジェクトの場合は、既存のフォルダを削除して$ npm install -g react-native-cliを実行します。
エラーなく実行されることを確認します
Gradleバージョン5以降では、このコマンドは私の問題を解決しました:
グラドルラッパー
https://docs.gradle.org/current/userguide/gradle_wrapper.html#sec:adding_wrapper