Ana sınıf org.gradle.wrapper.GradleWrapperMain bulunamadı veya yüklenemedi


166

Ben gibi yerel dizinleri silerek tüm projeyi temizlenir ~/.gradle, ~/.m2 ~./androidve ~/workspace/project/.gradleve seçilmesi File -> Invalidate Caches / Restart...Android Studio. Şimdi komutun yürütülmesi ./gradlewaşağıdaki çıktıya yol açar:

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

Söylemeye gerek yok, çok fazla sildim, soru tekrar nasıl onarılabilir? Bunu nasıl düzeltebileceğine dair bir fikrin var mı?


4
gradle wrapperEksik kodu yeniden oluşturmak için tekrar çalışabilmelisiniz ... Bu, kaynak kontrol ayarlarınız olmadığını varsayar.
cjstehno

Makinenizde kepçe takılı mı? Gradlew yerine normal gradle çağırmayı deneyebilirsiniz, muhtemelen gradle wrapper'ı da geri yüklemelisiniz.
RaGe

Yanıtlar:


136

Gradle wrapper eksik, bozuk veya bozuk.

Gradle wrapper nedir:
gradlew Gradle wrapper yürütülebilir - windows üzerinde toplu komut dosyası ve başka bir yerde kabuk komut dosyası. Sarma komut dosyası çağrıldığında, tanımlanan sınıf sürümünü indirir ve yürütür. Paketleyiciyi projenizle dağıtarak, herkes Gradle'ı önceden yüklemeye gerek kalmadan onunla çalışabilir. Daha da iyisi, yapı kullanıcılarının, yapının çalışmak için tasarlandığı Gradle sürümünü kullanmaları garanti edilir.

Gradle sarıcı geri yükleniyor:
Bu bir eklemek için gerekli olduğunu eskiden wrappergradle sarıcı ve tüm bağımlılıklarını geri yüklemek için build.gradle görevi. Örneğin:

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

Gradle'ın daha yeni sürümleri bunu gerektirmez. Artık yerleşik bir görevdir. Sadece koş:

gradle wrapper

Sürümleri belirtmek için ek bayraklar da sağlayabilirsiniz.

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

Bu görevi çalıştırdığınızda, bir gradle sarıcı komut dosyası ve gerekli jar dosyaları kaynak klasörlerinize eklenir. Özellikler gradle / wrapper / gradle-wrapper.properties içinde saklanır.

(Bunu çalıştırmak için yerel olarak gradle yüklemeniz gerekebilir. brew install gradleÖrneğin mac'te . Burada daha ayrıntılı talimatlara bakın )

İlk etapta neden eksikti?
OP, kepçe sarıcısının bağlı olduğu bir şeyi silmiş gibi görünüyor.

Ancak yaygın bir neden, .gitignore girdisinin sarma kavanozlarının git'e kontrol edilmesini engellemesidir. Geçerli olan .gitignore öğesinin kaynak klasörde veya kullanıcı ana klasörünüzde veya git global yapılandırmasında genel bir klasörde olabileceğini unutmayın. *.jar.Gitignore'da bir giriş yapmak yaygındır.

.Gitignore içindeki gradlew'ın jar dosyaları için bir istisna ekleyebilirsiniz

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

veya sargı kavanozunu git

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

ref: Gradle Sarıcı


1
Çok teşekkür ederim!
SePröbläm

8
Bu hatanın başka bir olası nedeni, gradle / wrapper / gradle-wrapper.jar dosyasının çalıştırılamamasıdır, örneğin dosyaları Windows'tan kopyaladıysanız ...
centic

Bu dava vardı ve sonunda hiçbir argüman ile gradlew.bat yürütme sabit. Neden bilmiyorum, ama denemeye değer.
Alwyn Schoeman

207

@ RaGe yanıtı ek olarak ben .jardosyaları görmezden olduğunu görmezden küresel bir git görmezden nerede karşılaştığım durum olabilir ve böylece kepçe sarıcı kavanoz asla taahhüt ediliyordu. Böylece girişimden sonra Jenkins sunucusunda bu hatayı alıyordum /var/lib/jenkins/my_project/gradlew build. Açıkça kavanozun bir ekleme zorlamak ve sonra taahhüt vardı:

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

17
Gerçekten de sorun buydu. Küresel bir .gitignore olduğumu fark etmedim.
amey91

1
Güzel bir. Ben de böyleydi.
Brendan

Bu benim sorunumdu ... Teşekkürler dostum!
theyCallMeJun

GitHub Eylemler CI / CD üzerinde çalışıyorum ve bu benim için oldu. Teşekkür ederim!
Andi

43

Benim için işe yarayan ilk koşmak:

 gradle wrapper

Başarılı bir yapıdan sonra koşabildim

./gradlew assembleRelease

Not: gradle wrapperİlk çalıştırmayı yapabilmek için brew install gradle. Yükleme başarılı olursa gradle wrapperproje kökünden çalıştırın .

Kaynak ve teşekkürler: http://gradle.org/docs/current/userguide/gradle_wrapper.html ve https://stackoverflow.com/users/745574/rage


1
Bu komutun çalışmadığı durumlarda, AS'de sağ tarafta Gradle paneli vardır. TıklayınGradle->ProjectName->ProjectName->Tasks->build setup->wrapper
Jemshit Iskenderov

Benim için çalışıyorum.
negrotico19

Evet, IntelliJ IDE'deki springBoot projesinde de aynı sorunu yaşadım, bu öneri sorunu çözdü. @Niklasingvar
Ermias K

41

Benim durumumda küresel bir oldu .gitignore, HankCa cevabı @ açıklandığı gibi .

Her Gradle projesinde yapmanız gereken hatırlamanız gereken kavanozu zorla eklemek yerine, sarmalayıcı kavanozu globalime yeniden dahil etmek için bir geçersiz kılma ekledim .gitignore:

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

Gradle kullanan birçok projem olduğu için bu benim için yararlı; Git şimdi sarmalayıcı kavanozunu eklememi hatırlatacak.

Bu geçersiz kılma, yukarıdaki gradle-wrapper.jar( gradleve gibi wrapper) dizinler yoksayılmadığı sürece çalışır - git, performans nedenleriyle yok sayılan dizinlere inmez .


Evet bu benim durumumda aynı sorun
silentsudo

22

Benim durumumda, wrapperklasörü kopyalarken alt klasörü bıraktım gradleve aynı hatayı aldım.

Ana sınıf org.gradle.wrapper.GradleWrapperMain bulunamadı veya yüklenemedi

sarmalayıcıyı başka bir konumdan kopyalarsanız, doğru klasör yapısına sahip olduğunuzdan emin olun.

├── Instagram Hesabındaki Resim ve Videoları build.gradle
├── sınıf
└── └── sarıcı
Gradle-wrapper.jar │ ├── Instagram Hesabındaki Resim ve Videoları gradle-wrapper.jar
│ └── Instagram Hesabındaki Resim ve Videoları gradle-wrapper.properties
├── gradlew
├── Instagram Hesabındaki Resim ve Videoları gradlew.bat
└── settings.gradle

Sarıcıyı neden kopyalıyorsunuz? Basitçe yürütmek gradle wrappersize aynı sonucu verecektir;)
Xerus

@Xerus, bazı kurumsal ortamlarda, paketleri özgürce indiremediğiniz ağ kısıtlamaları vardır. bu durumda kopyalamanız / taşımanız gerekir.
yantaq

8

Muhtemelen projenizdeki gradle-wrapper.jardizin altında dosya eksik gradle/wrapper.

Bu dosyayı build.gradle dosyasındaki bu komut dosyasıyla aşağıdaki gibi oluşturmanız gerekir,

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

ve görevi çalıştırın:

gradle wrapper

2. sınıf (veya üzeri) ile, özel bir görev eklemeden bir sarıcı ayarlayabilirsiniz:

gradle wrapper --gradle-version 2.3

VEYA

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

Tüm detaylar bu bağlantıda bulunabilir


"Kepçe sarıcı --gradle dağıtım-url myEnterpriseRepository: 7070 / gradle / dağılımları /… " için Windows 10'da birçok hata
Sevgi ve barış - Joe Codeswell

Evet, sorun gradle/wrapperdir içeriği eksik . Bu, belirttiğiniz şekilde çalıştırılarak düzeltilebilir gralde wrapper.
Yuri

Bu komutun çalışmadığı durumlarda, AS'de sağ tarafta Gradle paneli vardır. TıklayınGradle->ProjectName->ProjectName->Tasks->build setup->wrapper
Jemshit Iskenderov

4

gradlew.bat dosyasını kök klasörünüze ve gradlew-wrapper'ı gradlew klasörüne kopyalayabilirsiniz.

bu benim için iş.


4

Buna girdiğimde yukarıdaki cevapları takip ettim. Ve bu sorunu yaşıyorsanız, hem jar hem de özellik dosyalarını zorladığınızdan emin olun. Bu ikiden sonra bu sorunu almayı bıraktım.

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

3

Benim durumumda (windows 10 kullanarak) gradlew.bat içinde aşağıdaki kod satırları vardır:

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

APP_HOME değişkeni aslında proje için kök klasörü aşamalı, bu nedenle, bu bir şekilde karışıklık alırsanız alacaksınız:

Hata: Ana sınıf org.gradle.wrapper.GradleWrapperMain bulunamadı veya yüklenemedi

Benim için, bu benim proje klasör yapısı içinde ve işareti (&) olduğu için berbat olmuştu. Örn: C: \ Test ve Geliştirme \ Projem

Bu nedenle gradel, gradle-wrapper.jar dosyasını C: \ Test kök klasöründe bulmaya çalışıyordu ('&' işaretinden sonra ve '&' dahil her şeyi soyuyor)

Bunu yukarıdaki APP_HOME =% DIRNAME% satırının altına aşağıdaki satırı ekleyerek buldum. Sonra sonucu görmek için yarasa dosyasını çalıştırın.

echo "%APP_HOME%"

Bir yolu / dizini bozabilecek birkaç 'özel karakter' daha olacaktır.


2

Aynı hatayı gördüm ama benim durumumda LFS yüklü olmayan yeni bir Git yüklemesiydi. Söz konusu repo LFS ile ayarlandı ve gradle-wrapper.jar LFS'deydi, bu yüzden yalnızca LFS sunucusuna bir işaretçi içeriyordu. Çözüm basitti, sadece çalıştırın:

git lfs install

Ve taze bir klon hile yaptı. Sanırım git lfs pullya da sadece bir git pullde yardımcı olabilir ama sorunu olan kişi yerine taze bir klon yapmaya karar verdi.


1

@HankCa benim durumumda da sorunu çözdü. Gelecekte bu tür problemlerden kaçınmak gibi tehlikeli **/*.jargöz ardılarımı kendi kendini açıklayanlarla değiştirmeye karar verdim src/**/lib/*.jar. ** / * ile başlayan yoksayma en azından benim için biraz fazla tehlikelidir. Ve fikri sadece .gitignore satırının arkasına bakmak her zaman iyi bir fikirdir.


1

Benim durumumda gradle-wrapper.jar bir grup dosyayı değiştirdikten sonra bozuldu. Orijinaline geri dönmek sorunu çözdü.


1
Hey @ Neek Stack overflow'a hoş geldiniz, lütfen bu soruda 4'ten fazla cevap kabul edilen yeni soruya cevap verin, bu yüzden lütfen bu kısma konsantre olun.
Dilip

2
Elbette! kabul edilen tüm cevaplar bana yardımcı olmadı, bu yüzden bana yardımcı olanları ortaya koydum.
NeeK

1

Bir sonraki düzeltmeyle bu sorunu çözdüm (belki birine yardımcı olacaktır):

Proje klasörünüzün üst klasörlerinde boşluk veya başka yasak karakterler içeren adlar olup olmadığını kontrol edin. Evet ise - çıkarın.

"C: \ Users \ someuser \ Test Projects \ testProj" - bu durumda "Test Projeleri" "TestProjects" olmalıdır.



0

Benim durumumda, gradlew ve gradle klasörlerini projeden kaldırmıştım. İntellij'deki Gradle Projects penceresinden "Gradle Görevini Çalıştır" aracılığıyla temiz derleme görevlerini yeniden düzenleyin

resim açıklamasını buraya girin



0

yeni bir proje ise, mevcut klasörü kaldırın ve $ npm install -g reakt-native-cli komutunu çalıştırın

hatasız çalışıp çalışmadığını kontrol edin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.