Aku membersihkan seluruh proyek dengan menghapus direktori lokal seperti ~/.gradle
, ~/.m2
~./android
dan ~/workspace/project/.gradle
dan memilih ponsel File -> Invalidate Caches / Restart...
Android Studio. Sekarang pelaksanaan perintah ./gradlew
mengarah ke output berikut:
usr$ ./gradlew tasks
Error: Could not find or load main class org.gradle.wrapper.GradleWrapperMain
Tak perlu dikatakan, saya menghapus terlalu banyak, pertanyaannya adalah bagaimana itu bisa diperbaiki lagi? Apakah Anda punya ide bagaimana cara memperbaikinya?
android-studio
gradle
android-gradle-plugin
gradlew
SePröbläm
sumber
sumber
gradle wrapper
lagi untuk membuat ulang kode yang hilang ... ini dengan asumsi Anda tidak memiliki pengaturan kontrol sumber.Jawaban:
Pembungkus gradle Anda hilang, rusak, atau rusak.
Apa itu pembungkus gradle:
gradlew
apakah skrip batch dapat dieksekusi - batch pada jendela dan skrip shell di tempat lain. Script wrapper ketika dipanggil, mengunduh versi gradle yang ditentukan dan menjalankannya. Dengan mendistribusikan pembungkus dengan proyek Anda, siapa pun dapat bekerja dengannya tanpa perlu menginstal Gradle sebelumnya. Bahkan yang lebih baik lagi, pengguna build dijamin menggunakan versi Gradle yang dirancang untuk bekerja dengannya.Memulihkan pembungkus gradle:
Dulu Anda perlu menambahkan
wrapper
tugas ke build.gradle Anda untuk memulihkan pembungkus gradle dan semua dependensinya. Misalnya:Versi gradle yang lebih baru tidak memerlukan ini. Sekarang tugas bawaan. Lari saja:
Anda juga dapat menyediakan flag tambahan untuk menentukan versi dll
Saat Anda menjalankan tugas ini, skrip pembungkus gradle, dan file jar yang diperlukan ditambahkan ke folder sumber Anda. Properti disimpan dalam gradle / wrapper / gradle-wrapper.properties
(Anda mungkin perlu menginstal gradle secara lokal untuk menjalankan ini.
brew install gradle
Pada mac misalnya. Lihat instruksi lebih rinci di sini )Mengapa itu hilang sejak awal?
OP tampaknya telah menghapus sesuatu yang tergantung pada grader wrapper.
Tetapi alasan umum adalah bahwa entri .gitignore mencegah toples pembungkus diperiksa ke git. Perhatikan bahwa .gitignore yang berlaku mungkin ada di folder sumber, atau yang global di folder home pengguna Anda atau git konfigurasi global. Adalah umum untuk memiliki
*.jar
entri di .gitignore.Anda bisa menambahkan pengecualian untuk file jar gradlew di .gitignore
atau memaksa menambahkan toples ke dalam git
ref: Gradle Wrapper
sumber
Selain jawaban @ RaGe mungkin situasi yang saya hadapi di mana saya memiliki global git diabaikan yang mengabaikan
.jar
file dan sehingga toples pembungkus gradle tidak pernah dilakukan. Jadi saya mendapatkan kesalahan itu di server Jenkins setelah mencoba/var/lib/jenkins/my_project/gradlew build
. Saya harus secara eksplisit memaksa menambahkan toples dan kemudian melakukan:sumber
Yang berhasil bagi saya adalah menjalankan pertama kali:
Setelah berhasil membangun saya bisa berlari
Sumber dan terima kasih: http://gradle.org/docs/current/userguide/gradle_wrapper.html dan https://stackoverflow.com/users/745574/rage
sumber
Gradle->ProjectName->ProjectName->Tasks->build setup->wrapper
Dalam kasus saya ini adalah global
.gitignore
, seperti dijelaskan dalam jawaban @ HankCa .Alih-alih dengan paksa menambahkan toples, yang perlu Anda ingat untuk lakukan di setiap proyek Gradle, saya menambahkan override untuk memasukkan kembali toples jar di global saya
.gitignore
:Ini berguna bagi saya karena saya memiliki banyak proyek yang menggunakan Gradle; Git sekarang akan mengingatkan saya untuk memasukkan toples jar.
Override ini akan berfungsi selama tidak ada direktori di atas
gradle-wrapper.jar
(sepertigradle
danwrapper
) yang diabaikan - git tidak akan turun ke direktori yang diabaikan karena alasan kinerja .sumber
Dalam kasus saya, saya meninggalkan wrappersub folder saat menyalin gradlefolder dan mendapatkan kesalahan yang sama.
Tidak dapat menemukan atau memuat kelas utama org.gradle.wrapper.GradleWrapperMain
pastikan Anda memiliki struktur folder yang benar jika Anda menyalin pembungkus dari lokasi lain.
sumber
gradle wrapper
akan memberi Anda hasil yang sama persis;)Anda mungkin kehilangan
gradle-wrapper.jar
file di bawah direktorigradle/wrapper
di proyek Anda.Anda perlu membuat file ini melalui skrip ini di file build.gradle seperti di bawah ini,
dan jalankan tugas:
Dengan gradle 2.4 (atau lebih tinggi) Anda dapat mengatur pembungkus tanpa menambahkan tugas khusus:
ATAU
Semua detail dapat ditemukan tautan ini
sumber
gradle/wrapper
dir. Ini dapat diatasi dengan menjalankangralde wrapper
seperti yang Anda sebutkan.Gradle->ProjectName->ProjectName->Tasks->build setup->wrapper
Anda juga dapat menyalin gradlew.bat ke folder root Anda dan menyalin gradlew-wrapper ke folder gradlew.
itu bekerja untuk saya.
sumber
Saya mengikuti jawaban dari atas ketika saya mengalami ini. Dan Jika Anda mengalami masalah ini daripada pastikan untuk memaksa mendorong kedua jar dan properti file. Setelah dua ini, saya berhenti mendapatkan masalah ini.
sumber
Dalam kasus saya (menggunakan windows 10) gradlew.bat memiliki baris kode berikut:
Variabel APP_HOME pada dasarnya adalah folder root gradles untuk proyek, jadi, jika ini kacau, Anda akan mendapatkan beberapa cara:
Bagi saya, ini sudah kacau karena struktur folder proyek saya memiliki ampersand (&) di dalamnya. Misalnya C: \ Test & Dev \ MyProject
Jadi, gradel mencoba menemukan file gradle-wrapper.jar di folder root C: \ Test (menghapus semuanya setelah dan termasuk '&')
Saya menemukan ini dengan menambahkan baris berikut di bawah set APP_HOME =% DIRNAME% baris di atas. Kemudian jalankan file bat untuk melihat hasilnya.
Akan ada beberapa 'karakter khusus' lain yang dapat memecah jalur / direktori.
sumber
Saya melihat kesalahan yang sama tetapi dalam kasus saya itu adalah instalasi Git baru tanpa LFS diinstal. Repo yang dimaksud diatur dengan LFS dan gradle-wrapper.jar berada di LFS sehingga hanya berisi pointer ke server LFS. Solusinya sederhana, jalankan:
Dan klon baru melakukan trik. Saya kira
git lfs pull
atau hanyagit pull
bisa membantu tetapi orang dengan masalah memutuskan untuk melakukan klon baru sebagai gantinya.sumber
@HankCa memecahkan masalah dalam kasus saya juga. Saya memutuskan untuk mengubah pengabaian saya yang berbahaya
**/*.jar
menjadi yang cukup jelassrc/**/lib/*.jar
untuk menghindari masalah seperti itu di masa depan. Mengabaikan dimulai dengan ** / * agak terlalu berbahaya, setidaknya bagi saya. Dan selalu merupakan ide yang bagus untuk mendapatkan ide di balik deretan .gitignore hanya dengan melihatnya.sumber
Dalam kasus saya gradle-wrapper.jar rusak setelah mengganti banyak file. Mengembalikan yang asli menyelesaikan masalah.
sumber
Saya memperbaiki masalah ini dengan perbaikan selanjutnya (mungkin itu akan membantu seseorang):
Periksa apakah folder induk folder proyek Anda memiliki nama dengan spasi atau karakter terlarang lainnya. Jika ya - hapus saja.
"C: \ Users \ someuser \ Test Projects \ testProj" - dalam hal ini "Test Projects" harus "TestProjects".
sumber
Pada Gradle 5.x saya menggunakan:
sumber
Dalam kasus saya, saya telah menghapus folder gradlew dan gradle dari proyek. Reran bersih membangun tugas melalui "Run Gradle Task" dari jendela Gradle Projects di intellij
sumber
Untuk Gradle versi 5+, perintah ini memecahkan masalah saya:
https://docs.gradle.org/current/userguide/gradle_wrapper.html#sec:adding_wrapper
sumber
jika ini proyek baru, hapus folder yang ada dan jalankan $ npm install -g react-native-cli
periksa apakah berjalan tanpa kesalahan
sumber