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

내가 좋아하는 로컬 디렉토리를 삭제하여 전체 프로젝트를 청소 ~/.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

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



답변

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


답변

@RaGe의 대답 외에도 .jar파일 을 무시하고 전역 git ignore가 발생하여 gradle wrapper jar가 절대 커밋되지 않은 상황에 직면했을 수 있습니다 . 따라서 시도한 후 Jenkins 서버에서 해당 오류가 발생했습니다 /var/lib/jenkins/my_project/gradlew build. 항아리를 강제로 추가 한 다음 커밋해야했습니다.

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


답변

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

 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


답변

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

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

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

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

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


답변

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

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

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

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


답변

프로젝트의 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

모든 세부 사항은 이 링크 에서 찾을 수 있습니다


답변

gradlew.bat를 루트 폴더에 복사하고 gradlew-wrapper를 gradlew 폴더에 복사 할 수도 있습니다.

그것은 나를 위해 일한 것입니다.