Sprzątałam cały projekt usuwając lokalnych katalogów, takich jak ~/.gradle
, ~/.m2
~./android
a ~/workspace/project/.gradle
i chosing File -> Invalidate Caches / Restart...
w Android Studio. Teraz wykonanie polecenia ./gradlew
prowadzi do następującego wyniku:
usr$ ./gradlew tasks
Error: Could not find or load main class org.gradle.wrapper.GradleWrapperMain
Nie trzeba dodawać, że usunąłem za dużo, pytanie brzmi, jak można to ponownie naprawić? Czy masz jakieś pomysły, jak to naprawić?
android-studio
gradle
android-gradle-plugin
gradlew
SePröbläm
źródło
źródło
gradle wrapper
ponownie, aby ponownie wygenerować brakujący kod ... przy założeniu, że nie masz konfiguracji kontroli źródła.Odpowiedzi:
Brakuje Twojego opakowania gradle, jest ono uszkodzone lub uszkodzone.
Co to jest otoka gradle:
gradlew
to plik wykonywalny otoki gradle - skrypt wsadowy w systemie Windows i skrypt powłoki w innych miejscach. Wywołany skrypt opakowujący pobiera zdefiniowaną wersję gradle i wykonuje ją. Rozprowadzając opakowanie wraz z projektem, każdy może z nim pracować bez konieczności wcześniejszego instalowania Gradle. Co więcej, użytkownicy kompilacji mają gwarancję, że będą używać wersji Gradle, z którą kompilacja została zaprojektowana.Przywracanie opakowania gradle:
Kiedyś trzeba było dodać
wrapper
zadanie do pliku build.gradle, aby przywrócić opakowanie gradle i wszystkie jego zależności. Na przykład:Nowsze wersje gradle tego nie wymagają. Jest to teraz zadanie wbudowane. Po prostu biegnij:
Możesz także podać dodatkowe flagi, aby określić wersje itp
Po uruchomieniu tego zadania skrypt opakowania gradle i wymagane pliki jar są dodawane do folderów źródłowych. Właściwości są przechowywane w gradle / wrapper / gradle-wrapper.properties
(Może być konieczne lokalne zainstalowanie Gradle, aby uruchomić to.
brew install gradle
Na przykład na komputerze Mac. Zobacz bardziej szczegółowe instrukcje tutaj )Dlaczego w ogóle go brakowało?
Wygląda na to, że OP usunął coś, od czego zależy opakowanie gradle.
Ale częstym powodem jest to, że wpis .gitignore zapobiega sprawdzaniu słoików opakowujących w git. Zwróć uwagę, że w efekcie .gitignore może znajdować się w folderze źródłowym lub globalnym w folderze domowym użytkownika lub w globalnej konfiguracji git. Często
*.jar
wpis w .gitignore.Możesz dodać wyjątek dla plików jar programu Gradlew w formacie .gitignore
lub wymuś dodanie słoika do gita
ref: Gradle Wrapper
źródło
Oprócz odpowiedzi @ RaGe może być sytuacja, z którą miałem do czynienia, gdy miałem globalne ignorowanie gita, które ignorowało
.jar
pliki, więc słoik gradle wrapper nigdy nie został zatwierdzony. W ten sposób otrzymałem ten błąd na serwerze Jenkins po próbie/var/lib/jenkins/my_project/gradlew build
. Musiałem wyraźnie wymusić dodanie słoika, a następnie zatwierdzić:źródło
U mnie zadziałało pierwsze uruchomienie:
Po udanej kompilacji mogłem biec
Źródło i podziękowania: http://gradle.org/docs/current/userguide/gradle_wrapper.html i https://stackoverflow.com/users/745574/rage
źródło
Gradle->ProjectName->ProjectName->Tasks->build setup->wrapper
W moim przypadku było to globalne
.gitignore
, jak wyjaśniono w odpowiedzi @ HankCa .Zamiast na siłę dodawać słoik, o czym musisz pamiętać w każdym projekcie Gradle, dodałem zastąpienie, aby ponownie uwzględnić słoik opakowania w moim globalnym
.gitignore
:Jest to dla mnie przydatne, ponieważ mam wiele projektów korzystających z Gradle; Git przypomni mi teraz o dołączeniu słoika opakowania.
To nadpisanie będzie działało tak długo, jak żadne katalogi powyżej
gradle-wrapper.jar
(takie jakgradle
iwrapper
) nie będą ignorowane - git nie zejdzie do ignorowanych katalogów ze względu na wydajność .źródło
W moim przypadku opuściłem wrapperpodfolder podczas kopiowania gradlefolderu i otrzymałem ten sam błąd.
Nie można znaleźć lub załadować klasy głównej org.gradle.wrapper.GradleWrapperMain
upewnij się, że masz poprawną strukturę folderów, jeśli kopiujesz opakowanie z innej lokalizacji.
źródło
gradle wrapper
da dokładnie taki sam wynik;)Prawdopodobnie brakuje
gradle-wrapper.jar
pliku w katalogugradle/wrapper
w Twoim projekcie.Musisz wygenerować ten plik za pomocą tego skryptu w pliku build.gradle, jak poniżej,
i uruchom zadanie:
Z Gradle 2.4 (lub wyższym) możesz skonfigurować opakowanie bez dodawania dedykowanego zadania:
LUB
Wszystkie szczegóły można znaleźć w tym linku
źródło
gradle/wrapper
reż. Można temu zaradzić, uruchamiającgralde wrapper
zgodnie z opisem.Gradle->ProjectName->ProjectName->Tasks->build setup->wrapper
możesz również skopiować plik gradlew.bat do folderu głównego i skopiować plik gradlew-wrapper do folderu gradlew.
to działa dla mnie.
źródło
Postępowałem zgodnie z odpowiedziami z góry, kiedy napotkałem to. A jeśli masz ten problem, pamiętaj, aby wymusić wypchnięcie zarówno plików jar, jak i properties. Po tych dwóch przestałem otrzymywać ten problem.
źródło
W moim przypadku (w systemie Windows 10) gradlew.bat ma następujące wiersze kodu w:
Zmienna APP_HOME jest zasadniczo folderem głównym gradles dla projektu, więc jeśli zostanie w jakiś sposób pomieszany, otrzymasz:
Dla mnie było to pomieszane, ponieważ struktura folderów mojego projektu zawierała znak ampersand (&). Np. C: \ Test & Dev \ MyProject
Tak więc gradel próbował znaleźć plik gradle-wrapper.jar w folderze głównym C: \ Test (usuwając wszystko po znaku „&” i włączając go)
Znalazłem to, dodając następującą linię poniżej ustawionej linii APP_HOME =% DIRNAME% powyżej. Następnie uruchomiłem plik nietoperza, aby zobaczyć wynik.
Pojawi się kilka innych „znaków specjalnych”, które mogą spowodować przerwanie ścieżki / katalogu.
źródło
Widziałem ten sam błąd, ale w moim przypadku była to nowa instalacja Gita bez zainstalowanego LFS. Przedmiotowe repozytorium zostało utworzone przy użyciu LFS, a plik gradle-wrapper.jar był w LFS, więc zawierał tylko wskaźnik do serwera LFS. Rozwiązanie było proste, wystarczy uruchomić:
I świeży klon załatwił sprawę. Przypuszczam, że
git lfs pull
lub po prostugit pull
mogłaby pomóc, ale osoba z problemem zdecydowała się zamiast tego zrobić nowy klon.źródło
@HankCa rozwiązał problem również w moim przypadku. Postanowiłem zmienić moje niebezpieczne
**/*.jar
ignorowanie na oczywiste, jaksrc/**/lib/*.jar
uniknąć takich problemów w przyszłości. Ignorowanie zaczynające się od ** / * jest trochę zbyt niebezpieczne, przynajmniej dla mnie. I zawsze dobrze jest poznać ideę wiersza .gitignore, patrząc na niego.źródło
W moim przypadku plik gradle-wrapper.jar został uszkodzony po zastąpieniu kilku plików. Przywrócenie oryginalnej wersji rozwiązało problem.
źródło
Naprawiłem ten problem przy następnej poprawce (może to komuś pomoże):
Po prostu sprawdź, czy foldery nadrzędne folderu projektu mają nazwy ze spacjami lub innymi niedozwolonymi znakami. Jeśli tak - usuń go.
„C: \ Users \ someuser \ Test Projects \ testProj” - w tym przypadku jako „Test Projects” powinno być „TestProjects”.
źródło
W Gradle 5.x używam:
źródło
W moim przypadku usunąłem foldery gradlew i gradle z projektu. Ponownie wykonaj czyste zadania kompilacji za pomocą opcji „Uruchom zadanie Gradle” z okna projektów Gradle w intellij
źródło
W przypadku Gradle w wersji 5+ to polecenie rozwiązało mój problem:
https://docs.gradle.org/current/userguide/gradle_wrapper.html#sec:adding_wrapper
źródło
jeśli jest to nowy projekt, usuń istniejący folder i uruchom $ npm install -g react-native-cli
sprawdź, czy działa bez żadnego błędu
źródło