Eu limpei todo o projecto, excluindo diretórios locais como ~/.gradle
, ~/.m2
~./android
e ~/workspace/project/.gradle
e escolhendo File -> Invalidate Caches / Restart...
no Android Studio. Agora a execução do comando ./gradlew
leva à seguinte saída:
usr$ ./gradlew tasks
Error: Could not find or load main class org.gradle.wrapper.GradleWrapperMain
Escusado será dizer que eu apaguei demais, a questão é como ele pode ser reparado novamente? Você tem alguma idéia de como corrigir isso?
android-studio
gradle
android-gradle-plugin
gradlew
SePröbläm
fonte
fonte
gradle wrapper
novamente para gerar novamente o código ausente ... isso pressupõe que você não tenha nenhuma configuração de controle de origem.Respostas:
Seu invólucro de graduação está ausente, quebrado ou corrompido.
O que é o gradle wrapper:
gradlew
é o executável do gradle wrapper - script em lote no windows e shell script em outro local. O script do wrapper, quando chamado, baixa a versão definida do gradle e a executa. Ao distribuir o wrapper com seu projeto, qualquer pessoa pode trabalhar com ele sem a necessidade de instalar o Gradle previamente. Ainda melhor, é garantido que os usuários da compilação usem a versão do Gradle com a qual a compilação foi projetada para funcionar.Restaurando o Gradle Wrapper:
Costumava ser necessário adicionar uma
wrapper
tarefa ao seu build.gradle para restaurar o gradle wrapper e todas as suas dependências. Por exemplo:As versões mais recentes do gradle não exigem isso. Agora é uma tarefa interna. Apenas corra:
Você também pode fornecer sinalizadores adicionais para especificar versões, etc.
Quando você executa esta tarefa, um script wrapper gradle e os arquivos jar necessários são adicionados às suas pastas de origem. As propriedades são armazenadas em gradle / wrapper / gradle-wrapper.properties
(Pode ser necessário instalar o gradle localmente para executar isso.
brew install gradle
No mac, por exemplo. Veja instruções mais detalhadas aqui )Por que estava faltando em primeiro lugar?
O OP parece ter excluído algo do qual o gradle wrapper depende.
Mas um motivo comum é que uma entrada .gitignore impede que os jars do wrapper sejam verificados no git. Observe que o .gitignore em vigor pode estar na pasta de origem ou global na pasta inicial do usuário ou na configuração global do git. É comum ter uma
*.jar
entrada no .gitignore.Você pode adicionar uma exceção para os arquivos jar do gradlew em .gitignore
ou forçar, adicione o frasco do wrapper no git
ref: Wrapper Gradle
fonte
Além da resposta de @ RaGe, pode ser a situação que enfrentei em que eu ignorei um git global que estava ignorando
.jar
arquivos e, portanto, o frasco do wrapper gradle nunca estava sendo comprometido. Portanto, eu estava recebendo esse erro no servidor Jenkins após uma tentativa/var/lib/jenkins/my_project/gradlew build
. Eu tive que forçar explicitamente uma adição do jar e depois confirmar:fonte
O que funcionou para mim é primeiro executar:
Após a construção bem-sucedida, eu fui capaz de executar
Fonte e agradecimentos: http://gradle.org/docs/current/userguide/gradle_wrapper.html e https://stackoverflow.com/users/745574/rage
fonte
Gradle->ProjectName->ProjectName->Tasks->build setup->wrapper
No meu caso, era global
.gitignore
, como explicado na resposta da @ HankCa .Em vez de adicionar com força o jar, que você precisará lembrar de fazer em cada projeto Gradle, adicionei uma substituição para incluir novamente o jar wrapper no meu global
.gitignore
:Isso é útil para mim, pois tenho muitos projetos que usam Gradle; O Git agora me lembrará de incluir o frasco do invólucro.
Essa substituição funcionará desde que nenhum diretório acima
gradle-wrapper.jar
(comogradle
ewrapper
) seja ignorado - o git não descerá para diretórios ignorados por motivos de desempenho .fonte
No meu caso, deixei de fora a wrappersubpasta enquanto copiava a gradlepasta e recebi o mesmo erro.
Não foi possível encontrar ou carregar a classe principal org.gradle.wrapper.GradleWrapperMain
verifique se você possui a estrutura de pastas correta se copiar o wrapper de outro local.
fonte
gradle wrapper
para obter exatamente o mesmo resultado;)Você provavelmente está perdendo o
gradle-wrapper.jar
arquivo no diretóriogradle/wrapper
do seu projeto.Você precisa gerar esse arquivo por meio desse script no arquivo build.gradle como abaixo,
e execute a tarefa:
Com o gradle 2.4 (ou superior), você pode configurar um wrapper sem adicionar uma tarefa dedicada:
OU
Todos os detalhes podem ser encontrados neste link
fonte
gradle/wrapper
dir. Isso pode ser remediado executando ogralde wrapper
que você declarou.Gradle->ProjectName->ProjectName->Tasks->build setup->wrapper
você também pode copiar o gradlew.bat para a pasta raiz e copiar o gradlew-wrapper para a pasta gradlew.
isso é trabalho para mim.
fonte
Eu segui as respostas de cima quando me deparei com isso. E se você está tendo esse problema, certifique-se de forçar o envio dos arquivos jar e properties. Após esses dois, parei de receber esse problema.
fonte
No meu caso (usando o Windows 10), o gradlew.bat possui as seguintes linhas de código em:
A variável APP_HOME é essencialmente uma pasta raiz de gradles para o projeto, portanto, se isso for prejudicado de alguma forma, você receberá:
Para mim, isso foi uma bagunça porque a estrutura da pasta do meu projeto tinha um e comercial (&). Por exemplo, C: \ Test & Dev \ MyProject
Portanto, o gradel estava tentando encontrar o arquivo gradle-wrapper.jar em uma pasta raiz de C: \ Test (removendo tudo depois e incluindo o '&')
Encontrei isso adicionando a seguinte linha abaixo do conjunto APP_HOME =% DIRNAME% linha acima. Em seguida, execute o arquivo bat para ver o resultado.
Existem alguns outros 'caracteres especiais' que podem quebrar um caminho / diretório.
fonte
Eu vi o mesmo erro, mas no meu caso, era uma nova instalação do Git sem o LFS instalado. O repositório em questão foi configurado com o LFS e o gradle-wrapper.jar estava no LFS, portanto, ele continha apenas um ponteiro para o servidor LFS. A solução era simples, basta executar:
E um novo clone fez o truque. Suponho que
git lfs pull
apenas umgit pull
poderia ter ajudado, mas a pessoa com o problema decidiu fazer um novo clone.fonte
@HankCa também resolveu o problema no meu caso. Decidi mudar meus
**/*.jar
ignorantes perigosos para auto-explicativos,src/**/lib/*.jar
para evitar esses problemas no futuro. Ignora começar com ** / * são um pouco perigosos, pelo menos para mim. E é sempre uma boa ideia colocá-la atrás de uma linha .gitignore apenas olhando para ela.fonte
No meu caso, o gradle-wrapper.jar foi corrompido depois de substituir um monte de arquivos. A reversão para a original resolveu o problema.
fonte
Corrigi este problema com a próxima correção (talvez isso ajude alguém):
Verifique se as pastas pai da pasta do projeto têm nomes com espaços ou outros caracteres proibidos. Se sim - remova-o.
"C: \ Users \ someuser \ Test Projects \ testProj" - neste caso, "Test Projects" deve ser "TestProjects".
fonte
No Gradle 5.x eu uso:
fonte
No meu caso, removi as pastas gradlew e gradle do projeto. Reran tarefas de construção limpa por meio de "Executar Tarefa Gradle" na janela Projetos Gradle, em intellij
fonte
Para o Gradle versão 5+, este comando resolveu meu problema:
https://docs.gradle.org/current/userguide/gradle_wrapper.html#sec:adding_wrapper
fonte
se for um novo projeto, remova a pasta existente e execute $ npm install -g react-native-cli
verifique se é executado sem nenhum erro
fonte