Gradle: não foi possível determinar a versão java de '11 .0.2 '

133

Eu fiz o seguinte comentário:

./gradlew app:installDebug

apenas para encontrar o log:

FAILURE: Build failed with an exception.

* What went wrong:
Could not determine java version from '11.0.2'.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

* Get more help at https://help.gradle.org

Minha versão do gradle é 5.1.1:

------------------------------------------------------------
Gradle 5.1.1
------------------------------------------------------------

Build time:   2019-01-10 23:05:02 UTC
Revision:     3c9abb645fb83932c44e8610642393ad62116807

Kotlin DSL:   1.1.1
Kotlin:       1.3.11
Groovy:       2.5.4
Ant:          Apache Ant(TM) version 1.9.13 compiled on July 10 2018
JVM:          11.0.2 (Oracle Corporation 11.0.2+9-LTS)
OS:           Mac OS X 10.13.6 x86_64

Não tenho certeza de como proceder (tentei fazer upgrade / downgrade, mas nada funcionou até agora).

ATUALIZAÇÃO: quando corri ./gradlew --version, obtive o seguinte:

FAILURE: Build failed with an exception.

* What went wrong:
Could not determine java version from '11.0.2'.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

* Get more help at https://help.gradle.org

Meu gradle-wrapper.propertiescontém:

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-rc-1-all.zip
lesley2958
fonte
5
de acordo com este relatório de bug , é possível que seu wrapper Gradle seja mais antigo?
Roddy of the Frozen Peas
minha versão do gradle é 5.1.1, o que eu acho que deve servir.
lesley2958
2
Você executa o comando ./gradlew, que inicia a versão gradle associada a este projeto específico. Não há garantia de que a versão do projeto seja a mesma que você instalou (5.1.1)
tryman
1
Essa informação de versão é o resultado de gradle --versionou ./gradlew --version? Projetos baseados em Gradle geralmente usam um invólucro para tornar mais fácil para diferentes desenvolvedores usarem a mesma versão do Gradle para construir o projeto; isso também torna as compilações mais estáveis.
Slaw
essa é a versão degradle --version
lesley2958

Respostas:

123

Existem dois aplicativos Gradle diferentes em seu sistema.

  1. o Gradle de todo o sistema
    Este aplicativo é invocado por gradle (arguments).

  2. o gradle-wrapper
    O gradle-wrapper é específico para cada projeto e só pode ser chamado dentro do diretório do projeto, usando o comando ./gradlew (arguments).

A versão do gradle para todo o sistema é 5.1.1 (como o OP explicado nos comentários, executando o comando gradle --version retornou a versão 5.1.1).

No entanto, a falha é o resultado de uma chamada para o gradle-wrapper (./gradlew ). Você poderia verificar a versão do gradle wrapper do seu projeto? Para fazer isso, execute./gradlew --version dentro da pasta do seu projeto, no diretório onde estão os arquivos gradlew e gradlew.bat.

Atualização 1:
como a execução ./gradlew --versionfalhou, você pode verificar manualmente a versão do seu wrapper abrindo o arquivo:

(pasta raiz do projeto) /gradle/wrapper/gradle-wrapper.properties

com um editor de texto simples. O "DistributionUrl" dentro deve nos dizer qual é a versão do wrapper.

Atualização 2: de acordo com a pergunta atualizada do OP, a versão do gradle-wrapper é 4.1RC1.
Gradle adicionou suporte para JDK 11 no Gradle 5.0 . Portanto, como o 4.1RC não suporta o JDK 11, isso é definitivamente um problema.

A maneira óbvia seria atualizar o gradle-wrapper do seu projeto para a versão 5.0. No entanto, antes de atualizar, tente executar gradle app:installDebug. Isso usará o Gradle instalado em todo o sistema, cuja versão é 5.1.1 e suporta Java 11. Veja se isso funciona. Em caso afirmativo, seu buildscript (arquivo build.gradle) não é afetado por nenhuma alteração significativa entre v.4.1RC1 e v.5.1.1 e você pode atualizar seu wrapper executando a partir da linha de comando dentro da pasta do seu projeto: gradle wrapper --gradle-version=5.1.1[ *].

Se gradle app:installDebugfalhar na execução correta, talvez você precise atualizar o buildscript do Gradle. Para atualização de v.4.1RC1 para 5.1.1, o projeto Gradle fornece um guia ( 1 , 2 ) com alterações importantes e recursos obsoletos entre versões menores, para que você possa atualizar gradualmente para a versão mais recente.

Como alternativa, se por algum motivo você não puder ou não quiser atualizar seu buildscript do Gradle, você sempre pode escolher fazer o downgrade de sua versão do Java para uma que seja compatível com Gradle 4.1RC1.

[*] Como corretamente apontado em outra resposta de @lupchiazoem, use gradle wrapper --gradle-version=5.1.1(e não ./gradlewcomo eu havia postado originalmente por engano). O motivo é que o Gradle é executado em Java. Você pode atualizar seu gradle-wrapper usando qualquer distribuição Gradle funcional, seja o Gradle instalado em todo o sistema ou o próprio gradle-wrapper. No entanto, neste caso, seu wrapper não é compatível com a versão Java instalada, então você precisa usar o Gradle para todo o sistema (também conhecido como gradlee não ./gradlew).

Tryman
fonte
1
@tryman obrigado! para mim foi o seu update 2 que me ajudou. Como regra geral, acho que verificaria a versão Gradle que está por vir.
Avid Programmer
você não declara exatamente qual é a CAUSA do erro. Versões diferentes?
João Pimentel Ferreira
O que? Achei a Atualização 2 bastante clara. Ela estava tentando executar o wrapper Gradle da versão 4.1RC1 com JDK11. O Gradle adicionou suporte para JDK11 na versão 5.0. Qual é a sua confusão @ JoãoPimentelFerreira? Essa foi a causa, o resto é a solução de como atualizar o wrapper do projeto para uma versão posterior que suporte JDK11.
tryman de
1
Agora é a minha vez de ficar confuso. Se você realmente tiver o wrapper do Gradle na pasta do projeto e uma instalação do Gradle em todo o sistema, a solução passo a passo acima deve funcionar para você. Você tentou atualizar seu wrapper executando dentro da pasta do projeto o comando update gradle wrapper --gradle-version=5.0? Substitua a versão 5.0 pela versão desejada, acho que agora a mais recente é a 5.4
tryman de
1
No entanto, uma palavra de cautela: entre a versão 3.3 do seu wrapper e qualquer versão 5.x, é provável que haja algumas alterações importantes que você pode ou não encontrar. É por isso que, em minha resposta, indico a você que primeiro crie seu projeto com o Gradle em todo o sistema para verificar se tudo funciona perfeitamente com a versão 5.x que você deseja atualizar antes de atualizar o wrapper do projeto. Se estiver com pressa (sinto urgência em seu tom), você sempre pode usar o gradle do sistema diretamente ou fazer o downgrade para um JDK mais antigo e atualizar seu invólucro mais tarde.
tryman de
34

Como distributionUrlainda está apontando para uma versão mais antiga, atualize o wrapper usando:

gradle wrapper --gradle-version 5.1.1

Nota: Use gradlee nãogradlew

lupchiazoem
fonte
Isso funciona. O comando atualiza minha versão do gradle wrapper. Obrigado.
Daniel
Ou apenas substitua a versão na gradle/wrapper/gradle-wrapper.properties distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip versão 6 com JDK12 não parece funcionar. 5.1.1 funciona bem, obrigado.
Liam Kernighan
11

No meu caso, a JAVA_HOMEvariável foi definida como /usr/lib/jvm/jdk-11.0.2/. Foi suficiente desconfigurar a variável assim:

$ export JAVA_HOME=

dr0i
fonte
1
Isso também resolveu meu problema. Jenv pode ter começado meus problemas inicialmente.
jokarl
para mim GRADLE_HOMEfoi atualizado (para 5.4.1``), mas não a versão do gradle (ainda apontando para a versão mais antiga 4.3) que é estranho, mas reiniciar o terminal funcionou bem. algo estranho comsource ~/.bash_profile
prayagupd de
7

Atualizar gradle/wrapper/gradle-wrapper.propertiescom a seguinte versão corrigiu para mim:

distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
Manuel Schmitzberger
fonte
6

tl; dr : downgrade java executandoupdate-alternatives


Minha versão do gradle do sistema era 4.4.1 e a versão gradle wrapper era 4.0. Depois de executar o comando dado por várias outras respostas:

gradle wrapper --gradle-version 4.4.1

Eu ainda tive o mesmo erro:

FAILURE: Build failed with an exception.

* What went wrong:
Could not determine java version from '11.0.4'.

Acontece que o java 11 não era compatível até o gradle 4.8, e meus repositórios de software só tinham 4.4.1. (Além disso, atualizar para a versão mais recente do Gradle pode ser incompatível com o pacote que eu estava tentando compilar.)

A resposta foi fazer o downgrade do java. Na verdade, meu sistema já tinha o java8 instalado e foi fácil alternar entre as versões do java executando este comando e seguindo as instruções:

sudo update-alternatives --config java
craq
fonte
5

Como a versão wrapper não suporta 11+, você pode fazer truques simples para enganar a versão mais recente do InteliJ para sempre.

  press3x Shift -> type "Switch Boot JDK" -> and change for java 8. 

https://blog.jetbrains.com/idea/2015/05/intellij-idea-14-1-4-eap-141-1192-is-available/

Ou se você quiser trabalhar com java 11+, você simplesmente tem que atualizar a versão do wrapper para 4.8+

SuperAndrew
fonte
1
Apenas um aviso NÃO tente esta solução no Android Studio. Eu vou quebrar isso.
Mauricio Sartori
3

Para resumir a resposta longa, atualize seu gradlewusando a gradleferramenta do sistema . Observe que a atualização abaixo funciona mesmo se a gradleversão do seu sistema for < 5.

gradle wrapper --gradle-version=5.1.1
Rocky Inde
fonte
3

Eu tive o mesmo problema aqui. No meu caso, preciso usar uma versão antiga do JDK e estou usando o sdkmanager para gerenciar as versões do JDK, então mudei a versão da máquina virtual para 1.8.

sdk use java 8.0.222.j9-adpt

Depois disso, o aplicativo é executado conforme o esperado aqui.

Maciel Bombonato
fonte
1

Resolvi isso clicando em Arquivo -> Estrutura do projeto e, em seguida, alterei o local do JDK para usar JDK incorporado (recomendado)

Derrick Lamptey
fonte
0

Eu tive um problema semelhante. Eu apaguei estes:

  • bibliotecas e caches da pasta .idea (YourApp> .idea> ..) E
  • conteúdo da pasta de construção.

    então reconstrua.

* NÃO SE ESQUEÇA DE FAZER O BACKUP DO SEU PROJETO PRIMEIRO *

KHAN
fonte
0

Encontrei o mesmo problema no Ubuntu 18.04.3 LTS. No meu caso, o apt instalou o gradle versão 4.4.1. A versão java já instalada era 11.0.4

A mensagem de construção que recebi foi

Could not determine java version from '11.0.4'.

Na época, a maioria dos documentos on-line fazia referência à versão 5.6 do Gradle, então fiz o seguinte:

sudo add-apt-repository ppa:cwchien/gradle
sudo apt update
sudo apt upgrade gradle

Então, repeti a inicialização do projeto (usando "gradle init" com os padrões). Depois disso, "./gradlew build" funcionou corretamente.

Posteriormente, li um comentário sobre uma mudança no formato da saída de "java --version" que causou a quebra do gradle, o que foi corrigido em uma versão posterior do gradle.

MgFrobozz
fonte
0

No meu caso, eu estava tentando construir e obter o APK para um projeto Unity 3D antigo (para que eu possa jogar no meu telefone Android). Eu estava usando a versão mais recente do Android Studio e todos os pacotes SDK que consegui baixar via SDK Manager no Android Studio. Pacotes SDK estavam localizados em

C:/Users/Onat/AppData/Local/Android/Sdk 

E a mensagem de erro que recebi foi a mesma, exceto pelo JDK (Java Development Kit) versão "jdk-12.0.2". JDK estava localizado em

C:\Program Files\Java\jdk-12.0.2

E a variável de ambiente no Windows era JAVA_HOME: C: \ Program Files \ Java \ jdk-12.0.2

Após 3 horas de pesquisa, descobri que o Unity não oferece suporte ao JDK 10. Conforme informado em https://forum.unity.com/threads/gradle-build-failed-error-could-not-determine-java-version-from-10-0-1.532169/. Minha sugestão é:

  1. Desinstale o JDK indesejado se você já tiver um instalado. https://www.java.com/tr/download/help/uninstall_java.xml
  2. Dirigir a http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
  3. Faça login / abra uma conta Oracle, se ainda não estiver conectado.
  4. Baixe o JDK 8 mais antigo, mas funcional para a configuração do seu computador (32 bits / 64 bits, Windows / Linux etc.)
  5. Instale o JDK. Lembre-se do caminho de instalação. ( https://docs.oracle.com/cd/E19182-01/820-7851/inst_cli_jdk_javahome_t/ )
  6. Se você estiver usando Windows, abra as variáveis ​​de ambiente e altere o caminho Java clicando com o botão direito em Computer/This PC>Properties>Advanced System Settings>Environment Variables>New>Variable Name: JAVA_HOME>Variable Value: [YOUR JDK Path, Mine was "C:\Program Files\Java\jdk1.8.0_221"]
  7. No Unity 3D, pressione Edit > Preferences > External Tools and fill in the JDK path (Mine was "C:\Program Files\Java\jdk1.8.0_221").
  8. Além disso, no mesmo pop-up, edite SDK Path. (Obtenha em Android Studio > SDK Manager > Android SDK > Android SDK Location.)
  9. Se necessário, reinicie o computador para que as alterações tenham efeito.
Onat Korucu
fonte
0

conseguiu o arquivo de projeto .. gradle / wrapper / gradlewrapper.properties

lá você pode alterar o valor de distributionurlpara a versão mais recente. (Encontrado em docs.gradle.org)

atreyHazelHispanic
fonte
0

Eu estava enfrentando o mesmo problema na configuração do Docker, enquanto tentava instalar Gradle-2.4com o JDL 11.0.7. Eu tenho que instalar uma versão posterior para corrigir o problema.

Aqui está o Dockerfile de trabalho

FROM openjdk:11.0.7-jdk
RUN apt-get update && apt-get install -y unzip
WORKDIR /gradle
RUN curl -L https://services.gradle.org/distributions/gradle-6.5.1-bin.zip -o gradle-6.5.1-bin.zip
RUN unzip gradle-6.5.1-bin.zip
ENV GRADLE_HOME=/gradle/gradle-6.5.1
ENV PATH=$PATH:$GRADLE_HOME/bin
RUN gradle --version
Adiii
fonte