내가 좋아하는 로컬 디렉토리를 삭제하여 전체 프로젝트를 청소 ~/.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.html 및 https://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 폴더에 복사 할 수도 있습니다.
그것은 나를 위해 일한 것입니다.