Cordova: falha na verificação de requisitos para JDK 1.8 ou superior


96

Estou usando o Cordova 6.4.0 no sistema operacional Windows 7, mas recebo este erro quando tento criar a versão do Android:

Descrição do problema

A variável Java Home está configurada corretamente para o caminho JDK, mas não sei por que estou recebendo esse problema. Alguma sugestão, por favor?


3
Está bem. Tive o mesmo problema, mas não consegui baixar a versão 1.8, pois está oculta com outro nome. É o 8u152. Depois de algumas horas, encontrei-o aqui: oracle.com/technetwork/java/javase/downloads/…
user2367101

Respostas:


61

Desinstale todos os JDK anteriores, incluindo 1.8 Instale JDK 1.8


3
@Urbycoz você só precisa ir para Add or Remove Programs/Program Featuresdentro Windows OS. Em seguida, remova todas as versões anteriores do Java. Eu tinha um version 7também instalado e após uninstallingisso, cordova run androidfuncionou. Boa sorte.
Aakash

1
Mas o que isso significa? Como o Cordova seleciona o JDK se diferentes JDKs estão instalados. Não é possível ter apenas um JDK (por exemplo, construir máquina)?
Bruno Ranschaert

você ainda precisa definir as variáveis ​​de ambiente para que Cordova possa encontrar o caminho para seu JDK superuser.com/questions/949560/…
Yvonne Aburrow

20
@MadNeox desinstalar outra versão é apenas uma solução alternativa, não a solução
Gandhi

fez o truque para mim. foi para appwiz.cpl (do Windows cmd) e removeu o java 7 e o java sdk 7.
Ortiz

53

No Linux (Debian / Ubuntu), isso pode ser resolvido selecionando um SDK Java 1.8 em

sudo update-alternatives --config javac

Alterar a JAVA_HOMEvariável env diretamente não parece ter nenhum efeito.

EDIT: respondendo aos comentários: Isso provavelmente tem algo a ver com o fato de que novas instalações do Debian (e aparentemente Ubuntu) Java através do gerenciador de pacotes não usam a JAVA_HOMEvariável de ambiente para determinar a localização do JRE. Veja este e este post para mais informações.


1
Você fez meu dia. Tentei de tudo nos últimos dias. Tnx muito. Mas por que só isso funciona? Por que definir a variável não tem efeito?
meu-

2
Também funcionou para mim no Ubuntu ... Tinha feito para javamas não javac! Agora não há necessidade de desinstalar o Java 9 :)
hughjdavey

Mesma observação aqui. Embora JAVA_HOMEestivesse apontando para a direita 1.8 JDK, apenas atualizar o padrão do sistema Cordova satisfeito.
myoan

1
Ao fazer sudo update-alternativas --config javac Há apenas uma alternativa no grupo de links javac (fornecendo / usr / bin / javac): / usr / lib / jvm / java-11-openjdk-amd64 / bin / javac Nada a configurar . Eu preciso voltar para java-8-openjdk. Existe alguma coisa para fazer isso?
Taieb

Por que esta é uma solução no Ubuntu. Assim como myoan disse, por que atualizar o padrão do sistema cordova satisfeito?
Jithin

40

Você não precisa desinstalar nenhuma versão superior do SDK. apenas instale o jdk1.8.0_161 ou não se já estiver instalado.

Agora apenas defina a JAVA_HOMEvariável USER (não a variável do sistema) conforme mostrado na imagem abaixo.

insira a descrição da imagem aqui

Desta forma, você não precisa desinstalar a versão superior e o problema será resolvido.


9
Lembre-se de fechar o terminal / IDE antes de tentar executar seus comandos novamente.
Daniel

1
ou você pode apenas executar $. ~ / .bashrc para exportar as variáveis ​​env novamente
Nick Cuevas


23

Você pode ter uma versão superior a 8, mas o Cordova só oferece suporte a JDK 1.8. Veja este link Documentação do Cordova

Dei uma olhada no pedaço de código que realmente verifica o número da versão do seu java. Procure o seguinte: module.exports.check_java em plataformas / android / cordova / lib / check_reqs.js . na linha 220. Você verá um regex e um comentário deixado pela equipe de que o Java 10 terá suporte no futuro.

A expressão regular existente falhará quando for executada nas versões mais recentes de java, como Java 10. Isso ocorre porque Java 8 ou 9 são salvos no seguinte formato: 1. [8-9]. ** mas Java 10 é salvo como 10. ** e a expressão regular procura uma versão no formato 1. [8-9]. **

// Let's check for at least Java 8, and keep it future proof so we can support Java 10
var match = /javac ((?:1\.)(?:[8-9]\.)(?:\d+))|((?:1\.)(?:[1-9]\d+\.)(?:\d+))/i.exec(output);

Minha solução:

Você não precisa desinstalar sua versão atual do JRE ou JDK, pois o instalador instala cada versão em uma pasta específica.

1- Instale a versão Java 8 Siga este link

2- Atualize suas variáveis ​​de ambiente:

  • JAVA_HOME se você instalou o JDK
  • JRE_HOME se você instalou o JRE

apontando-os para o local onde o JRE 8 e o JDK 8 foram instalados.

// On my machine   
C:\Program Files\Java\jdk1.8.0_171 // JAVA_HOME
C:\Program Files\Java\jre1.8.0_171 // JRE_HOME

Abra uma nova sessão de terminal e execute o comando que estava falhando. Deve funcionar agora.

Não funcionou?

Caso falhe por outros motivos, possível processo de depuração:

  • Certifique-se de que as variáveis ​​JAVA_HOME e JRE_HOME sejam variáveis ​​do sistema.
  • Certifique-se de que eles sejam adicionados ao caminho do usuário Adicionar variáveis ​​ao caminho

Esta foi a única resposta correta para mim. Veja este link para mais informações evothings.com/doc/build/cordova-install-linux.html
Dara Java

17

A desinstalação de versões anteriores do JDK teria funcionado. Mas pode ser uma solução alternativa, eu acho. Enfrentei o mesmo problema e notei que a nova versão do JDK e a versão mais antiga do caminho do JDK foram mencionadas na 'pathvariável de ambiente.

Remover o caminho JDK da versão mais antiga da 'pathvariável ambiental funcionou para mim. Espero que ajude alguém também.


se estiver configurando variáveis ​​de ambiente, você pode achar útil superuser.com/questions/949560/…
Yvonne Aburrow

Sim, sou capaz de executar o comando build com isso, mas ainda estou lutando com o comando run 'ionic cordova run android', mostrando o erro INSTALL FAILED UPDATE INCOMPATIBLE.
supriya chauhan

@supriyachauhan você pode tentar reinstalar o material completo novamente. Caso contrário, você pode ter que fornecer detalhes elaborados para reduzir o problema
Gandhi

9

Eu descobri que minha variável de ambiente de caminho estava apontando para java 1.7 enquanto JAVA_HOME estava apontando para 1.8, então editei a variável de caminho para 1.8 e estava bem.


8

no meu caso, JAVA_HOME estava apontando para C: \ Arquivos de programas (x86) \ Java \ jdk1.7.0_55

quando escrevi onde java em cmd produziu C: \ Program Files (x86) \ Java \ jdk1.7.0_55 junto com o caminho java.exe, mudei a variável JAVA_HOME de variáveis ​​de ambiente para C: \ Program Files \ Java \ jdk1.8.0_20 e funcionou, então parece que tive 2 instâncias de jdk e cordova precisa do v1.8. *.


Verifique para onde sua variável Path está apontando. Eu tinha JAVA_HOME apontando para 1.8, mas no Path estava apontando para uma versão diferente. Funcionou bem depois de alinhar os dois!
ahb

6

MAC: Navegue até: / Library / Java / JavaVirtualMachines Certifique-se de ter apenas jdk1.8.0_201.jdk Se você tiver muitos, remova outro JDK


5

Eu concordo com @Hozington. Este deve ser o bug no código Cordova de detecção da versão Java. O que eu fiz foi:

  1. Mantenha o JDK 10
  2. Instale o JDK 8
  3. Mude o JAVA_HOMEpara o caminho do JDK 8 e mude opath variável também.
  4. reinicie o "cmd" e execute cordova buildnovamente.

E o erro desapareceu!


5

Resposta MacOS com várias versões Java instaladas e sem necessidade de desinstalar

Mostre-me quais versões do Java eu ​​instalei:

$ ls -l /Library/Java/JavaVirtualMachines/

Para configurá-lo para minha versão jdk1.8:

$ ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/bin/javac /usr/local/bin/javac

Para configurá-lo para minha versão jdk11:

$ ln -s /Library/Java/JavaVirtualMachines/jdk-11.0.7.jdk/Contents/Home/bin/javac /usr/local/bin/javac

-------------------------------------------------- -----------------------

Observe que, apesar do que a mensagem diz, parece que significa que ele quer a versão 1.8 e lança esta mensagem se você tiver uma versão posterior versão .

O que se segue são minhas tentativas anteriores que me levaram à resposta acima, que funcionou ... Você pode precisar fazer algo diferente dependendo do que está instalado, então talvez estas notas possam ajudar:


Defina-o para minha versão jdk1.8

$ export PATH=/Library/Java/JavaVirtualMachines/jdk-11.0.7.jdk/Contents/Home/bin/javac:$PATH

Definir para minha versão jdk11

$ export PATH=/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/bin/javac:$PATH

... mas na verdade isso não funciona porque /usr/bin/javacainda é o que executa primeiro:

$ which javac
/usr/bin/javac

... para ver o que é executado primeiro no caminho:

$ cat /etc/paths
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin

Isso significa que posso substituir o /usr/bin/javac... veja os comandos no início da resposta ...
O comando para defini-lo como jdk1.8 usando ln, no início desta resposta, é o que funcionou para mim.


4

se você tiver muitas versões do JDK, você pode executar

export JAVA_HOME="/usr/local/env/java/jdk1.8.0_131.jdk/Contents/Home/"

antes de construir cordova, para usar uma versão específica do jdk :)


3

Pessoal, para obter a combinação certa no Windows , você precisa fazer o seguinte

  1. Baixe e instale qualquer versão do JDK 1.8 ou superior.
  2. Abra as variáveis ​​de ambiente, crie uma variável de ambiente chamada JAVA_HOME e defina o valor para o caminho de instalação do JDK. C:\Program Files\Java\jdk1.8.0_162 certifique-se de não adicionar o \binno valor.

insira a descrição da imagem aqui

  1. Na variável do caminho do sistema, coloque um ponto ;e vírgula e adicione este valor ao caminho do sistema, por exemplo, C:\Program Files\Java\jdk1.8.0_162\bin;Aqui o \biné adicionado.

Nota: As variáveis ​​de ambiente são complicadas. Elas devem ser fechadas por um ; antes de abrir outro. É por isso que colocamos um antes de agregar o valor e um depois do valor para fechá-lo.

insira a descrição da imagem aqui

  1. Agora feche o terminal e reabra e execute os comandos anteriores.

há uma mistura de endereçamento java ... de JAVA_HOME, PATH. cordova está usando PATH, que possivelmente aponta para java12 / 13
bortunac

3

Às vezes, mudar o caminho e java-homenão funciona. Você precisa adicionar

C:\Users\[your user]\AppData\Local\Android\Sdk\platform-tools
C:\Users\[your user]\AppData\Local\Android\Sdk\tools

para o caminho da variável ambiental também.


3

Hoje também recebi este erro Cordova : Requirements check failed for JDK 1.8 or greaterno meu Mac OS ao construir o Ionic App ao executar o comandoionic cordova build --release android via terminal.

O comando abaixo resolve meu problema: -

export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home"

Espero que ajude alguém no futuro!


2

Esta mensagem de erro confunde o usuário, a tela de sucesso conforme abaixo.sucesso de construção de cordova

A mensagem de erro faz o usuário tentar consertar a falha de construção com a configuração JAVA_HOME. Mas o verdadeiro problema não está apenas no JAVA_HOME.

Eu corrijo este problema com a configuração correta em JAVA_HOME e Path na "variável de sistema". insira a descrição da imagem aqui

Espero que possa ajudar a resolver o problema, mas não reinstale o JDK.


2

A resposta postada por MadNeox está correta. Eu estava enfrentando um problema semelhante, tinha o jdk 9 instalado, bem como a versão 1.8

Eu tentei primeiro mantendo o jdk 9 e removendo o 1.8, ele exibiria um erro Falha na verificação de requisitos

Então tentei desinstalar o jdk9 e reinstalar o 1. desta vez, ele estava mostrando falha ao executar o javac-version

Depois de brincar com as variáveis ​​de ambiente por algum tempo, finalmente consegui a solução

Neste ponto, meu sistema tem apenas o jdk 1.8 Cordova versão: 7.1.0

-Abra a guia Variáveis ​​de Ambiente -Sob variáveis ​​de usuário, crie uma nova variável PATH -Dê a ela o seguinte valor C: \ Arquivos de Programas \ Java \ jdk1.8.0_151 \ bin (pode mudar dependendo de onde você instalou seu jdk)

Isso deve resolver seu problema. Espero que ajude

Embora a resposta já tenha sido dada, demorei algum tempo para descobrir onde estava errado, então decidi postar isso na esperança de economizar o tempo de outra pessoa


1

Apenas certifique-se de que mesmas versões do JDK (ou seja, 1,8, neste caso) são acessíveis a partir de PATHvariável de ambiente e JAVA_HOME. Exemplo: se JAVA_HOME=C:\Program Files\Java\jdk1.8.0_152então PATHvariável também deve conter acima caminho e importante antes de qualquer (se houver algum) outro caminho de se JDK / JRE já mencionado na PATHvariável. Você pode optar por desinstalar outras versões se nenhum outro aplicativo estiver usando uma versão diferente do java.


1

Se você tem o jdk8 e o jdk9 instalados, você deve verificar qual é a versão

no caminho e para onde JAVA_HOME está apontando.

No log que você postou, vejo que JAVA_HOME está levando ao JDK9.

modifique seu JAVA_HOME env var globel para JDK8 de destino ou você pode alterar JAVA_HOME no PowerShell antes de usar a CLI de cordova se quiser usar jdk8 apenas para cordova:

$env:JAVA_HOME="C:\Program Files\Java\jdk1.8.0_151"

**cordova build android**

1

Se você tiver várias versões do Java instaladas e precisar mantê-las, verifique o seguinte:

  • JAVA_HOME apontando para seu jdk1.8
  • na sua variável PATH você precisa verificar se o caminho jdk1.8 \ bin está antes dos outros caminhos jdk \ bin

1

Eu enfrentei o mesmo problema com jdk1.8.0_201. Foi resolvido quando fiz JAVA_HOME = C: \ Arquivos de programas \ Java \ jdk1.8.0_201 e adicionei "C: \ Arquivos de programas \ Java \ jdk1.8.0_201 \ bin" em variável de caminho


1

Tenho o (aberto) JDK 8 e 11 instalado no Windows 10 e tive o mesmo problema. Para mim funcionou o seguinte:

  1. Defina JAVA_HOME para apontar para JDK 8. (Mencionado em muitas respostas anteriores.) E
  2. Remova (!) JDK 11 do PATH, pois descobriu-se que - embora exibindo o caminho JAVA_HOME apontando para JDK 8 - o Cordova realmente acessou o JDK 11 que estava incluído no PATH, o que fez com que a verificação da versão Java falhe.

1

É uma pergunta antiga, mas como acabei de ter o mesmo problema, mas o erro tinha outra origem, aqui uma resposta curta.

Problema encontrado no Windows (apenas) e com o IDE Webstorm 2019.2

Na versão 2019.2, o Webstorm tinha um problema, porque usava internamente jdk aberto para a variável% JAVA_HOME% em vez do (do sistema operacional) java jdk direcionado.

No meu caso (sim, é antigo, é um projeto antigo de cordova ...)

executando java -versionem cmd.exe do Windows:

$ java -version
java version "1.8.0_221"

mas executando java -versionno terminal Webstorms:

$ java -version
openjdk version "11.0.3" 2019-04-16
// more output

Uma correção veio com o patch lançado mais tarde (hoje), versão 2019.2.1. Agora o Webstorm usa a variável os% JAVA_HOME% como deveria e ojava -version saída é idêntica em ambos os casos.

Espero que ajude alguém!


1

O erro ocorre quando o caminho padrão para java é definido como uma versão diferente de Java 8 ou JDK 1.8. *

No meu caso, instalei o Java 11 depois de instalar o Java 8

Você pode testar executando:

java -version

Para o meu caso, ele retornou:

java version "11.0.8" 2020-07-14 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.8+10-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.8+10-LTS, mixed mode)

Para corrigir isso, precisamos garantir que o caminho do java seja apontado para binários Java 8 em vez

Supondo que você já tenha o Java 8 ou JDK 1.8. * Instalado:

  1. Certifique-se de que JAVA_HOME e JRE_HOME estejam definidos (certifique-se de apontar para Java 1.8. *)

Variável Env

  1. Dentro de PATH, certifique %JAVA_HOME%\bin- se de que ou C:\Program Files\Java\jdk1.8.0_251\binseja adicionado

insira a descrição da imagem aqui

  1. Origem do problema: Minha instalação do JDK 11 adicionou duas entradas PATH bem no topo, tendo precedência ou substituindo o %JAVA_HOME%\binPATH que aponta para JDK 1.8. *

Não adicione estes se você não os tiver, encontre outras entradas de PATH que podem substituir %JAVA_HOME%\bin

insira a descrição da imagem aqui

  1. Clique em "Mover para baixo" para as entradas de substituição até que estejam abaixo %JAVA_HOME%\bin

%JAVA_HOME%\bin PATH que aponta para Java 8 agora será priorizado sobre as outras entradas de PATH que apontam para JDK 11

insira a descrição da imagem aqui

  1. Salve, abra um novo terminal e execute
java -version

Para o meu caso, ele retornou:

java version "1.8.0_251"
Java(TM) SE Runtime Environment (build 1.8.0_251-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.251-b08, mixed mode)

Fixo!


0
  1. Vá para a página inicial do painel de controle
  2. Configurações avançadas do sistema
  3. variáveis ​​ambientais
  4. Escolha JAVA_HOME
  5. editar
  6. valor variável para 1,8

0

Parece que o Android SDK não oferece suporte a Java 9. Faça o downgrade para 8 se você não quiser voltar para o JDK 1.8, o que para mim é ridículo. O JDK 8 funciona para mim, mas certifique-se de definir a variável de ambiente JAVA_HOME para o local de instalação do JDK corretamente.


0

De acordo com a documentação oficial do Cordova, ele suporta apenas JDK 1.8 não superior até a data (abril de 2018) . Ou pode haver problema com o script de detecção de versão dentro de cordova.

Cordova: Instalando os requisitos


0

Acabei de renomear a pasta JDK mais antiga com _, apenas no caso de precisar mais dela, e funcionou.

C:\Program Files (x86)\Java\_jdk1.7.0_40 
C:\Program Files (x86)\Java\_jre7

Na minha máquina, a configuração de java e javac era inconsistente: java apontava para JDK 9 enquanto javac apontava para JDK 8. Definir ambos como JDK 8 corrigiu o problema.
ominug,

0

Estou usando windows e tendo duas versões jdk 1.8 e 14 alguma coisa ...

Enfrentou o mesmo problema e depois de alguma depuração encontrou a solução.

  1. defina JAVA_HOME corretamente.
  2. Altere o valor PATH da variável de usuário com a nova versão jdk (1.8).
  3. Altere o valor PATH da variável de usuário com a nova versão jdk (1.8).

E resolveu


0

o versão Ubuntu / Debian Linux desta resposta é instalar o openjdk 8 e definir o padrão viaupdate-alternatives


# install (open)jdk 8
sudo apt-get install -y openjdk-8-jdk

# update java compiler and set to 1.8
update-alternatives --config javac

# update java runtime (optional)
update-alternatives --config java

# Also set $JAVA_HOME and $PATH to your .bashrc (optional)
echo 'export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64' >> ~/.bashrc
echo 'export PATH="$PATH:$JAVA_HOME/bin' >> ~/.bashrc

# load in current bash session
source ~/.bashrc
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.