기본 클래스 org.gradle.wrapper.GradleWrapperMain을 찾거나로드 할 수 없습니다.


166

내가 좋아하는 로컬 디렉토리를 삭제하여 전체 프로젝트를 청소 ~/.gradle, ~/.m2 ~./android~/workspace/project/.gradle및 chosing File -> Invalidate Caches / Restart...안드로이드 스튜디오에서. 이제 명령을 실행 ./gradlew하면 다음과 같은 결과가 나타납니다.

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

말할 것도없이, 너무 많이 삭제했습니다. 문제는 어떻게 다시 수리 할 수 ​​있습니까? 이 문제를 해결하는 방법에 대한 아이디어가 있습니까?


4
gradle wrapper누락 된 코드를 재생성 하기 위해 다시 실행할 수 있어야합니다 . 이것은 소스 제어 설정이 없다고 가정 한 것입니다.
cjstehno

컴퓨터에 gradle이 설치되어 있습니까? gradlew 대신 일반 gradle을 호출하여 gradle 래퍼도 복원해야합니다.
RaGe

답변:


134

gradle 래퍼가 없거나 손상되었거나 손상되었습니다.

gradle wrapper는 무엇입니까 :
gradlew gradle wrapper 실행 파일입니다-Windows의 배치 스크립트 및 다른 곳의 쉘 스크립트. 랩퍼 스크립트는 호출 될 때 정의 된 gradle 버전을 다운로드하여 실행합니다. 래퍼를 프로젝트와 함께 배포하면 누구나 Gradle을 미리 설치할 필요없이 누구나 작업 할 수 있습니다. 또한 빌드 사용자는 빌드와 함께 설계된 Gradle 버전을 사용해야합니다.

gradle wrapper 복원 : gradle wrapper 및 모든 종속 항목을 복원하려면 build.gradle에 작업을
추가 wrapper해야했습니다. 예를 들어 :

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에 저장됩니다.

( brew install gradle예를 들어 mac 에서이를 실행하려면 gradle을 로컬로 설치해야 할 수 있습니다 . 자세한 지침은 여기를 참조 하십시오 )

처음에는 왜 없어 졌습니까?
OP는 gradle 래퍼가 의존하는 것을 삭제 한 것으로 보입니다.

그러나 일반적인 이유는 .gitignore 항목이 래퍼 항아리가 git에 체크인되지 못하게하기 때문입니다. .gitignore는 사실상 소스 폴더에 있거나 사용자 홈 폴더 또는 git 전역 구성에있는 전역 폴더에있을 수 있습니다. *.jar.gitignore에 항목 이있는 것이 일반적 입니다.

.gitignore에서 gradlew의 jar 파일에 대한 예외를 추가 할 수 있습니다

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

또는 래퍼 항아리를 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파일 을 무시하고 전역 git ignore가 발생하여 gradle wrapper jar가 절대 커밋되지 않은 상황에 직면했을 수 있습니다 . 따라서 시도한 후 Jenkins 서버에서 해당 오류가 발생했습니다 /var/lib/jenkins/my_project/gradlew build. 항아리를 강제로 추가 한 다음 커밋해야했습니다.

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

17
이것은 실제로 문제였습니다. 나는 글로벌 .gitignore가 있다는 것을 몰랐다.
amey91

1
좋은데 나도 마찬가지였다.
Brendan

이건 내 문제 였어 ... 고마워 친구!
theyCallMeJun

GitHub Actions에서 CI / CD 작업을하고 있습니다. 감사합니다!
Andi

43

나를 위해 일한 것은 먼저 실행하는 것입니다.

 gradle wrapper

성공적인 빌드 후 나는 달릴 수 있었다

./gradlew assembleRelease

참고 : gradle wrapper첫 실행을 실행할 수 있습니다 brew install gradle. 설치가 성공한 경우 gradle wrapper프로젝트 루트에서 실행하십시오 .

출처와 감사 : http://gradle.org/docs/current/userguide/gradle_wrapper.htmlhttps://stackoverflow.com/users/745574/rage


1
이 명령이 작동하지 않는 경우 AS에는 오른쪽에 Gradle 패널이 있습니다. 클릭Gradle->ProjectName->ProjectName->Tasks->build setup->wrapper
Jemshit Iskenderov

나를 위해 일하고 있습니다.
negrotico19 19

예, IntelliJ IDE의 springBoot 프로젝트에서 동일한 문제가 발생 하여이 제안으로 문제가 해결되었습니다. 감사합니다 @niklasingvar
Ermias K

41

내 경우는 세계적인이었다 .gitignore, HankCa의 대답 @에 설명 된대로 .

각 Gradle 프로젝트에서 기억해야 할 항아리를 강제로 추가하는 대신 전역에 래퍼 항아리를 다시 포함시키는 재정의를 추가했습니다 .gitignore.

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

Gradle을 사용하는 많은 프로젝트가 있으므로 유용합니다. Git은 이제 래퍼 용기를 포함하도록 상기시켜줍니다.

이 오버라이드 (override)는, 너무 오래 위의 어떤 디렉토리로 작동합니다 gradle-wrapper.jar(예 gradle와는 wrapper) 무시하지 않습니다 - 자식은 성능상의 이유로 무시 디렉토리에서 내려하지 않습니다 .


예, 이것은 내 경우와 같은 문제입니다
silentsudo

22

내 경우에는 wrapper폴더를 복사하는 동안 하위 폴더를 제외 gradle하고 동일한 오류가 발생했습니다.

기본 클래스 org.gradle.wrapper.GradleWrapperMain을 찾거나로드 할 수 없습니다.

다른 위치에서 랩퍼를 복사 할 경우 올바른 폴더 구조를 사용해야합니다.

├── build.gradle
├── gradle
│ └── 포장지
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle

래퍼를 왜 복사 하시겠습니까? 간단히 실행 gradle wrapper하면 정확히 같은 결과를 얻을 수 있습니다.)
Xerus

@Xerus, 일부 기업 환경에서는 패키지를 자유롭게 다운로드 할 수없는 네트워크 제한이 있습니다. 이 경우 복사 / 이동해야합니다.
yantaq

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 및 속성 파일을 모두 강제로 밀어 넣으십시오. 이 두 가지 후에이 문제가 발생하지 않았습니다.

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 % 줄 아래에 다음 줄을 추가하여 이것을 발견했습니다. 그런 다음 박쥐 파일을 실행하여 결과를 확인하십시오.

echo "%APP_HOME%"

경로 / 디렉토리를 손상시킬 수있는 몇 가지 다른 '특수 문자'가 있습니다.


2

나는 같은 오류를 보았지만 제 경우에는 LFS가 설치되지 않은 새로운 Git 설치였습니다. 해당 리포지토리는 LFS로 설정되었고 gradle-wrapper.jar은 LFS에 있으므로 LFS 서버에 대한 포인터 만 포함했습니다. 해결책은 간단했습니다.

git lfs install

그리고 새로운 클론이 트릭을 수행했습니다. 나도 도움 git lfs pullgit 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"-이 경우 "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.