ไม่สามารถค้นหาหรือโหลดคลาสหลัก org.gradle.wrapper.GradleWrapperMain


166

ฉันทำความสะอาดทั้งโครงการโดยการลบไดเรกทอรีท้องถิ่นเช่น~/.gradle, ~/.m2 ~./androidและ~/workspace/project/.gradleและ chosing File -> Invalidate Caches / Restart...ใน Android สตูดิโอ ตอนนี้การประมวลผลคำสั่ง./gradlewจะนำไปสู่เอาต์พุตต่อไปนี้:

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

ไม่จำเป็นต้องบอกว่าฉันลบไปมากเกินไปคำถามคือจะซ่อมได้อีกครั้งได้อย่างไร คุณมีความคิดวิธีการแก้ไขปัญหานี้หรือไม่?


4
คุณควรจะสามารถเรียกใช้gradle wrapperอีกครั้งเพื่อสร้างรหัสที่หายไปอีกครั้ง ... นี่เป็นการสมมติว่าคุณไม่มีการตั้งค่าการควบคุมแหล่งที่มา
cjstehno

คุณติดตั้ง gradle บนเครื่องของคุณหรือไม่? คุณสามารถลองเรียกใช้ gradle ปกติแทน gradlew ก็น่าจะคืนค่า wrapper ของ gradle ได้เช่นกัน
RaGe

คำตอบ:


135

wrapper gradle ของคุณขาดหายไปหรือเสียหาย

wrapper gradle คืออะไร: wrapper
gradlew gradle สามารถเรียกใช้งานได้ - ชุดสคริปต์บน windows และ shell script ที่อื่น ๆ สคริปต์ตัวตัดคำเมื่อเรียกใช้จะดาวน์โหลดเวอร์ชัน gradle ที่กำหนดและเรียกใช้งาน ด้วยการกระจาย wrapper กับโครงการของคุณทุกคนสามารถทำงานกับมันได้โดยไม่จำเป็นต้องติดตั้ง Gradle ล่วงหน้า ยิ่งไปกว่านั้นผู้ใช้งานบิลด์ก็รับประกันว่าจะใช้เวอร์ชั่นของ Gradle ที่บิลด์นั้นออกแบบมาเพื่อใช้งาน

การเรียกคืน wrapper gradle:
มันเคยเป็นที่คุณต้องการเพิ่มwrapperงานใน build.gradle ของคุณเพื่อเรียกคืน wrapper gradle และการอ้างอิงทั้งหมดของมัน ตัวอย่างเช่น

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

gradle รุ่นที่ใหม่กว่าไม่ต้องการสิ่งนี้ ตอนนี้มันเป็นภารกิจในตัว เพิ่งรัน:

gradle wrapper

นอกจากนี้คุณยังสามารถระบุธงเพิ่มเติมเพื่อระบุรุ่น ฯลฯ

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

เมื่อคุณรันภารกิจนี้สคริปต์ wrapper gradle และไฟล์ jar ที่ต้องการถูกเพิ่มเข้ากับโฟลเดอร์ต้นทางของคุณ คุณสมบัติจะถูกเก็บไว้ใน gradle / wrapper / gradle-wrapper.properties

(คุณอาจต้องติดตั้ง gradle ในเครื่องเพื่อเรียกใช้งานbrew install gradleบน mac เช่นดูคำแนะนำโดยละเอียดเพิ่มเติมได้ที่นี่ )

ทำไมมันหายไปตั้งแต่แรก?
OP ดูเหมือนว่าจะลบบางสิ่งบางอย่างที่ wrapper gradle ขึ้นอยู่กับ

แต่สาเหตุที่พบบ่อยคือรายการ. gitignore จะป้องกันไม่ให้มีการตรวจสอบไหขวดหุ้ม โปรดทราบว่า. gitignore มีผลบังคับใช้อาจอยู่ในโฟลเดอร์ต้นทางหรือโฟลเดอร์ส่วนกลางในโฟลเดอร์โฮมของผู้ใช้ของคุณหรือการกำหนดค่าส่วนกลาง git เป็นเรื่องปกติที่จะมี*.jarรายการใน. gitignore

คุณสามารถเพิ่มข้อยกเว้นสำหรับไฟล์ jar ของ gradlew ใน. gitignore

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

หรือบังคับให้เพิ่ม jar wrapper ใน git

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

อ้างอิง: Gradle Wrapper


1
ขอบคุณมาก!
SePröbläm

8
อีกสาเหตุที่เป็นไปได้สำหรับข้อผิดพลาดนี้คือการใช้ไฟล์ gradle / wrapper / gradle-wrapper.jar เช่นถ้าคุณคัดลอกไฟล์จาก Windows ...
centic

ฉันมีกรณีนี้และในที่สุดก็ดำเนินการ gradlew.bat โดยไม่มีข้อโต้แย้งแก้ไข ไม่รู้ว่าทำไม แต่ควรลองดู
Alwyn Schoeman

207

นอกจากคำตอบของ @ RaGe อาจเป็นสถานการณ์ที่ฉันเผชิญซึ่งฉันมีคอมไพล์ระดับโลกที่ไม่สนใจ.jarไฟล์ที่ถูกละเว้นและดังนั้นขวดหุ้มเกรเดอร์ที่ไล่ระดับสีก็ไม่เคยเกิดขึ้น /var/lib/jenkins/my_project/gradlew buildดังนั้นผมได้รับข้อผิดพลาดที่บนเซิร์ฟเวอร์เจนกิ้นส์หลังจากที่พยายาม ฉันต้องบังคับให้เพิ่มขวดอย่างชัดเจนและจากนั้นกระทำ:

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

17
นี่เป็นปัญหาอย่างแท้จริง ฉันไม่ได้ตระหนักว่าฉันมี. gignignore ทั่วโลก
amey91

1
ทำได้ดีนี่. นี่เป็นกรณีของฉันด้วย
เบรนแดน

นี่คือปัญหาของฉัน ... ขอบคุณเพื่อน!
TheyCallMeJun

กำลังทำงานกับ CI / CD ใน GitHub Actions และนี่ก็เป็นของฉัน ขอบคุณ!
Andi

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

ใช่ฉันมีปัญหาเดียวกันกับโครงการ springBoot บน IntelliJ IDE คำแนะนำนี้แก้ไขปัญหาได้ ขอบคุณ @niklasingvar
Ermias K

41

ในกรณีของฉันมันเป็นโลก.gitignore, ตามที่อธิบายไว้ในคำตอบ @ HankCa ของ

แทนที่จะเพิ่ม jar อย่างจริงจังซึ่งคุณจะต้องจำไว้ว่าให้ทำในแต่ละโครงการของ Gradle ฉันได้เพิ่มการแทนที่เพื่อรวม jar wrapper ไว้ใน global ของฉัน.gitignore:

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

สิ่งนี้มีประโยชน์สำหรับฉันเนื่องจากฉันมีหลายโครงการที่ใช้ Gradle ตอนนี้ Git จะเตือนฉันให้ใส่ขวดปิดผนึก

แทนที่นี้จะทำงานตราบไดเรกทอรีข้างต้นgradle-wrapper.jar(เช่นgradleและwrapper) จะถูกละเลย - คอมไพล์จะไม่ลงในไดเรกทอรีละเว้นสำหรับเหตุผลประสิทธิภาพ


ใช่นี่เป็นปัญหาเดียวกันในกรณีของฉัน
silentsudo

22

ในกรณีของฉันฉันออกจากwrapperโฟลเดอร์ย่อยในขณะที่คัดลอกgradleโฟลเดอร์และมีข้อผิดพลาดเดียวกัน

ไม่สามารถค้นหาหรือโหลดคลาสหลัก org.gradle.wrapper.GradleWrapperMain

ตรวจสอบให้แน่ใจว่าคุณมีโครงสร้างโฟลเดอร์ที่ถูกต้องหากคุณคัดลอก wrapper จากตำแหน่งอื่น

├── build.gradle
├── gradle
└──└── wrapper
├──├── gradle-wrapper.jar
└──└── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle

ทำไมคุณถึงคัดลอกเสื้อคลุม? เพียงดำเนินการgradle wrapperจะให้ผลลัพธ์ที่แน่นอนเหมือนกัน;)
Xerus

@ Xerus ในบางองค์กร env มีข้อ จำกัด ของเครือข่ายที่คุณไม่สามารถดาวน์โหลดแพ็คเกจได้อย่างอิสระ ในกรณีนี้คุณต้องคัดลอก / ย้าย
yantaq

8

คุณอาจgradle-wrapper.jarไฟล์หายไปภายใต้ไดเรกทอรีgradle/wrapperในในโครงการของคุณ

คุณต้องสร้างไฟล์นี้ผ่านสคริปต์นี้ในไฟล์ build.gradle ดังนี้

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

และเรียกใช้งาน:

gradle wrapper

ด้วย gradle 2.4 (หรือสูงกว่า) คุณสามารถตั้งค่า wrapper โดยไม่ต้องเพิ่มงานเฉพาะ:

gradle wrapper --gradle-version 2.3

หรือ

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

รายละเอียดทั้งหมดสามารถพบได้ที่ลิงค์นี้


ข้อผิดพลาดมากมายใน windows 10 สำหรับ "gradle wrapper --gradle-distribution-url myEnterpriseRepository: 7070 / gradle / distributions / ... "
ความรักและความสงบสุข - Joe Codeswell

ใช่ปัญหาขาดเนื้อหาของgradle/wrapperdir สามารถแก้ไขได้โดยเรียกใช้gralde wrapperตามที่คุณระบุ
ยูริ

ในกรณีที่คำสั่งนี้ไม่ทำงานบน AS จะมีแผง Gradle ทางด้านขวา คลิกGradle->ProjectName->ProjectName->Tasks->build setup->wrapper
Jemshit Iskenderov

4

คุณยังสามารถคัดลอก gradlew.bat ลงในโฟลเดอร์รากของคุณและคัดลอก gradlew-wrapper ไปยังโฟลเดอร์ gradlew

ที่ทำงานสำหรับฉัน


4

ฉันทำตามคำตอบจากด้านบนเมื่อฉันพบสิ่งนี้ และถ้าคุณมีปัญหานี้กว่าให้แน่ใจว่าได้บังคับให้กดทั้งไฟล์ jar และคุณสมบัติ หลังจากสองสิ่งนี้ฉันหยุดรับปัญหานี้

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 พยายามค้นหาไฟล์ gradle-wrapper.jar ในโฟลเดอร์รูทของ C: \ Test (ลอกทุกอย่างออกหลังจากนั้นรวมถึง '&')

ฉันพบสิ่งนี้โดยการเพิ่มบรรทัดต่อไปนี้ด้านล่างบรรทัด APP_HOME =% DIRNAME% ที่ด้านบน จากนั้นรันไฟล์ bat เพื่อดูผลลัพธ์

echo "%APP_HOME%"

จะมี 'อักขระพิเศษ' อื่น ๆ อีกสองสามตัวที่สามารถทำลายพา ธ / ไดเรกทอรี


2

ฉันเห็นข้อผิดพลาดเดียวกัน แต่ในกรณีของฉันมันเป็นการติดตั้ง Git ใหม่โดยไม่ต้องติดตั้ง LFS repo ที่เป็นปัญหาถูกตั้งค่าด้วย 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 ยินดีต้อนรับสู่ Stack overflow กรุณาให้คำตอบสำหรับคำถามใหม่คำถามนี้มีคำตอบที่ยอมรับแล้วมากกว่า 4 คำตอบดังนั้นโปรดให้ความสนใจกับส่วนนั้น
Dilip

2
แน่นอน! คำตอบที่ได้รับการยอมรับทั้งหมดข้างต้นไม่ได้ช่วยฉันดังนั้นฉันจึงใส่สิ่งที่ช่วยฉันออก
NeeK

1

ฉันแก้ไขปัญหานี้ด้วยการแก้ไขครั้งต่อไป (อาจช่วยคนอื่นได้):

เพียงตรวจสอบว่าโฟลเดอร์พาเรนต์ของโฟลเดอร์โปรเจ็กต์ของคุณมีชื่อที่มีช่องว่างหรืออักขระต้องห้ามอื่น ๆ ถ้าใช่ - ลบออก

"C: \ Users \ someuser \ Test Projects \ testProj" - ในกรณีนี้ "โครงการทดสอบ" ควรเป็น "TestProjects"



0

ในกรณีของฉันฉันได้ลบโฟลเดอร์ gradlew และ gradle ออกจากโครงการ รันงานสร้างใหม่ทั้งหมดผ่าน "Run Gradle Task" จากหน้าต่าง Gradle Projects ในหน้าต่าง

ป้อนคำอธิบายรูปภาพที่นี่



0

หากเป็นโครงการใหม่ให้ลบโฟลเดอร์ที่มีอยู่ออกและเรียกใช้ $ npm install -g react-native-cli

ตรวจสอบว่าทำงานโดยไม่มีข้อผิดพลาดใด ๆ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.