メインクラスorg.gradle.wrapper.GradleWrapperMainが見つからないか、読み込めませんでした


166

私は次のようにローカルディレクトリを削除することにより、プロジェクト全体を掃除し~/.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

言うまでもありませんが、削除しすぎてしまいました。もう一度修復するにはどうすればよいですか。これを修正する方法はありますか?


4
gradle wrapper不足しているコードを再生成するために再度実行できるはずです...これは、ソース管理の設定がないことを前提としています。
cjstehno 2015

マシンにgradleがインストールされていますか?あなたはgradlewの代わりに通常のgradleを呼び出すことを試すことができます、おそらくgradleラッパーも復元するべきです。
RaGe

回答:


133

Gradleラッパーが見つからないか、壊れているか、破損しています。

Gradleラッパーとは:
gradlew Gradleラッパー実行可能ファイル-Windowsのバッチスクリプトと他の場所のシェルスクリプトです。ラッパースクリプトが呼び出されると、定義されたGradleバージョンをダウンロードして実行します。プロジェクトと一緒にラッパーを配布することにより、Gradleを事前にインストールする必要なく、誰でもラッパーを使用できます。さらに、ビルドのユーザーは、ビルドが動作するように設計されたバージョンのGradleを使用することが保証されています。

Gradleラッパーの復元:
以前は、wrapperGradleラッパーとそのすべての依存関係を復元するには、build.gradleにタスクを追加する必要がありました。例えば:

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

Gradleの新しいバージョンでは、これは必要ありません。これは組み込みタスクです。とにかく走れ:

gradle wrapper

追加のフラグを指定して、バージョンなどを指定することもできます

gradle wrapper --gradle-version 6.2 --distribution-type all

このタスクを実行すると、gradleラッパースクリプトと必要なjarファイルがソースフォルダーに追加されます。プロパティはgradle / wrapper / gradle-wrapper.propertiesに保存されています

(これを実行するには、gradleをローカルにインストールする必要がある場合がありbrew install gradleます。たとえば、Macで。詳細な手順については、こちらを参照してください)

そもそもなぜそれが欠けていたのですか?
OPはgradle wrapperが依存しているものを削除したようです。

しかし、一般的な理由は、.gitignoreエントリがラッパーjarをgitにチェックインできないことです。有効な.gitignoreがソースフォルダーにあるか、ユーザーのホームフォルダーまたはgitグローバル構成にグローバルにあることに注意してください。*.jar.gitignoreにエントリがあるのが一般的です。

.gitignoreにgradlewのjarファイルの例外を追加できます

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

またはgitにラッパーjarを強制的に追加します

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

ref:Gradleラッパー


1
どうもありがとうございました!
SePröbläm

8
このエラーの別の考えられる原因は、gradle / wrapper / gradle-wrapper.jarファイルを実行できないようにすることです。たとえば、Windowsからファイルをコピーした場合...
centic

私はこのケースを抱えていて、最終的にgradlew.batを引数なしで実行して修正しました。理由はわかりませんが、試してみる価値はあります。
Alwyn Schoeman

207

@RaGeの答えに加えて、私が直面したのは、.jarファイルを無視していたグローバルgit ignoreがあり、gradleラッパーjarがコミットされなかったという状況かもしれません。したがって、試行後にJenkinsサーバーでそのエラーが発生していました/var/lib/jenkins/my_project/gradlew build。私はjarの追加を明示的に強制してからコミットする必要がありました:

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

17
これは確かに問題でした。グローバル.gitignoreがあることに気付きませんでした。
amey91 2015

1
良いですね。私もそうでした。
ブレンダン

これはまさに私の問題でした...
theyCallMeJun

GitHubアクションでCI / CDに取り組んでいますが、これで完了です。ありがとうございました!
アンディ

43

私にとってうまくいったのは、最初に実行することです:

 gradle wrapper

ビルドが成功した後、私は実行することができました

./gradlew assembleRelease

注:gradle wrapper最初に実行できるようにするには、を実行しbrew install gradleます。インストールが成功した場合はgradle wrapper、プロジェクトルートから実行します。

出典および感謝:http : //gradle.org/docs/current/userguide/gradle_wrapper.htmlおよびhttps://stackoverflow.com/users/745574/rage


1
このコマンドが機能しない場合、ASの右側にGradleパネルがあります。クリックGradle->ProjectName->ProjectName->Tasks->build setup->wrapper
Jemshit Iskenderov

私のために働いています。
negrotico19

はい、IntelliJ IDEのspringBootプロジェクトで同じ問題が発生しました。この提案により問題が解決しました。ありがとう@niklasingvar
Ermias K

41

私の場合、それはグローバルた.gitignoreHankCaの答え@で説明したように

jarを強制的に追加する代わりに、Gradleプロジェクトごとに忘れずに行う必要がありますが、ラッパーjarをグローバルに再含めるためのオーバーライドを追加しました.gitignore

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

Gradleを使用するプロジェクトがたくさんあるので、これは私にとって便利です。Gitはラッパーjarを含めるように通知します。

このオーバーライドは、上記のディレクトリgradle-wrapper.jargradleおよびなどwrapper)が無視されない限り機能します。gitはパフォーマンス上の理由で無視されたディレクトリに移動しません


はい、これは私の場合と同じ問題です
silentsudo

22

私の場合、wrapperフォルダのコピー中にgradleサブフォルダを省略して同じエラーが発生しました。

メインクラスorg.gradle.wrapper.GradleWrapperMainが見つからないか、読み込めませんでした

他の場所からラッパーをコピーする場合は、正しいフォルダー構造になっていることを確認してください。

├──build.gradle
├──グラドル
│└──ラッパー
│├──gradle-wrapper.jar
│└──gradle-wrapper.properties
├──gradlew
├──gradlew.bat
└──settings.gradle

なぜラッパーをコピーするのですか?単純に実行するgradle wrapperと、まったく同じ結果が得られます;)
Xerus

@Xerus、一部の企業環境では、パッケージを自由にダウンロードできないネットワーク制限があります。この場合、コピー/移動する必要があります。
yantaq 2018

8

プロジェクトの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

すべての詳細はこのリンクで見つけることができます


「gradle wrapper --gradle-distribution-url myEnterpriseRepository:7070 / gradle / distributions /…」のWindows 10での多くのエラー
愛と平和-Joe Codeswell

はい、問題はgradle/wrapperdir のコンテンツが欠落していることです。これは、指定gralde wrapperしたとおりにを実行することで改善できます。
Yuri

このコマンドが機能しない場合、ASの右側にGradleパネルがあります。クリックGradle->ProjectName->ProjectName->Tasks->build setup->wrapper
Jemshit Iskenderov

4

gradlew.batをルートフォルダーにコピーし、gradlew-wrapperをgradlewフォルダーにコピーすることもできます。

それは私の仕事です。


4

私がこれに遭遇したとき、私は上からの答えに従いました。また、この問題が発生している場合は、jarファイルとプロパティファイルの両方を強制的にプッシュするようにしてください。これらの2つの後、この問題の発生を停止しました。

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

3

私の場合(Windows 10を使用)、gradlew.batには次のコード行があります。

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

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%"

パス/ディレクトリを壊す可能性のある他のいくつかの「特殊文字」があります。


2

私は同じエラーを見ましたが、私の場合、LFSがインストールされていないGitの新規インストールでした。問題のリポジトリはLFSでセットアップされ、gradle-wrapper.jarはLFSにあったため、LFSサーバーへのポインターのみが含まれていました。ソリューションはシンプルで、実行するだけです:

git lfs install

そして、新鮮なクローンがうまくやった。私はおそらく、git lfs pullまたはgit pull同様に助けることができたと思いますが、問題のある人は代わりに新しいクローンを作ることにしました。


1

@HankCaは私の場合にも問題を解決しました。私は、将来このような問題を回避するために、危険な**/*.jar無視を自明なものに変更することにしsrc/**/lib/*.jarました。** / *で始まる無視は、少なくとも私には少し危険です。.gitignore行の背後にあるアイデアを見るだけで、そのアイデアを理解することは常に良い考えです。


1

私の場合、一連のファイルを置き換えた後、gradle-wrapper.jarが破損しました。元の状態に戻すと問題が解決しました。


1
Hey @ Neekスタックオーバーフローへようこそこの質問はすでに4つ以上の回答が受け入れられているため、新しい質問に回答してください。その部分に集中してください。
Dilip、2017

2
承知しました!上記のすべての受け入れられた答えは私を助けませんでしたので、私は助けになったものを置きました。
NeeK

1

私はこの問題を次の修正で修正しました(多分それは誰かを助けるでしょう):

プロジェクトフォルダの親フォルダの名前にスペースやその他の禁止文字が含まれているかどうかを確認してください。はいの場合-削除します。

「C:\ Users \ someuser \ Test Projects \ testProj」-この場合、「Test Projects」は「TestProjects」である必要があります。



0

私の場合、私はgradlewとgradleフォルダをプロジェクトから削除しました。intellijのGradle Projectsウィンドウの「Run Gradle Task」からクリーンビルドタスクを再実行

ここに画像の説明を入力してください



0

新しいプロジェクトの場合は、既存のフォルダーを削除して$ npm install -g react-native-cliを実行します

エラーなしで実行されることを確認します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.