Erro de chave de registro: a versão Java tem o valor '1.8', mas '1.7' é necessário

91

Enquanto correndo

sencha app build production

Eu estou recebendo o seguinte erro:

Erro: chave de registro 'Software \ JavaSoft \ Java Runtime Environment' \ CurrentVersion '

tem o valor '1,8', mas '1,7' é obrigatório. Erro: não foi possível encontrar java.dll Erro: Não foi possível encontrar Java SE Runtime Environment.

java -version , o comando está mostrando o seguinte:

Java versão "1.8.0_40" Java (TM) SE Runtime Environment (build 1.8.0_40-b26) Java HotSpot (TM) 64-Bit Server VM (build 25.40-b25, modo misto)

Não é possível descobrir onde o caminho está errado. Qualquer ideia?

----------------------- EDITAR -------------------------- ----------------------

Nota : Estou usando o Windows 7 (64 bits).

Tentei desinstalar o cmd sencha touch e reinstalar. Mas ainda assim mesmo erro.

Desinstalei todas as instâncias da versão java e reinstalei a mais recente, mas o problema persiste.

Anand Gupta
fonte

Respostas:

291

Depois de tentar mais de cem truques, finalmente consegui sucesso.

Eu removi tudo java.exe, javaw.exee javaws.exedo meu

  1. Windows\System32 e

  2. Windows\SysWOW64 pasta. [Tente a etapa 2 se você tiver um sistema x64 (Win 7 64 bits)]

Anand Gupta
fonte
11
Usuários do Win 10 64Bit: excluir os 3 arquivos System32resolverá o problema.
iTurki 01 de
4
Mas temos que fechar e reabrir o cmd e digitar java -version para ver as mudanças ... Funcionou perfeitamente, obrigado!
Cristian B.
1
@SkepticScribbler: Isso acontece quando você de alguma forma confundiu o próprio java. Você está tentando executar uma VM java 7 onde encontrou um JRE 8. Isso pode mostrar esse problema mesmo se você digitar na linha de comando apenas java ou java -version em um ambiente mal configurado.
Anand Gupta de
@AnandGupta este é um tiro no escuro, não uma solução - stackoverflow.com/a/53192247/1423507
masseyb
39

No meu caso (Windows 7 de 64 bits), fiz apenas o seguinte:

  • Removida a referência a C: \ ProgramData \ Oracle \ Java \ javapath; da variável de ambiente Path
  • Arquivos removidos java , javaw e javaws do \ Windows \ System32: C pasta

Depois disso, fechei todos os consoles de linha de comando abertos, os reabri e executei java -version .

aribeiro
fonte
Tive esse problema no Windows 10 ao instalar o JDK5u14, JDK6u34, JDK7u51 e JDK8u121 (nessa ordem). Remover os arquivos java da pasta Windows não foi suficiente. Tive também que remover o caminho da variável de ambiente PATH.
uhm
32
  1. abrir regedit
  2. vamos para [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment]
  3. alterar o valor CurrentVersionde "1,8" para "1,7"
sorte
fonte
2
Obrigado. Isso resolveu meu problema. Não tenho permissão para excluir nada em SysWOW64. Simplesmente mudar CurrentVersion através do regedit resolveu meu problema.
Krish
1
Uma solução muito mais simples do que tentar excluir todas as versões Java estranhas!
Fred Andrews
.. entretanto, não resolve nada. Então o instalador reclama, e com razão, que o java 8 é necessário.
user508402
Obrigado esta solução funcionou estava tentando resolver este erro por muito tempo
Abhishek Sawant
19

re: usuários do Windows

Não. Não remova a referência de ambiente Javapath de sua variável PATH.

O motivo pelo qual o registro não funcionou é que o script Oracle Javapath precisa ser executado na sequência PATH à frente dos diretórios JRE e JDK - ele resolverá a versão atual:

coloque este diretório no HEAD de sua %PATH%variável:

C:\ProgramData\Oracle\Java\javapath

[ou onde quer que esteja em sua área de trabalho]

então seu PATH será parecido com isto - o meu, por exemplo

PATH=C:\ProgramData\Oracle\Java\javapath;<other path directories>;E:\Program Files\Java\jdk1.8.0_77\bin;E:\Program Files\Java\jre1.8.0_77\bin

Você verá então a versão atual correta:

C:\>java -version
java version "1.8.0_77"
Java(TM) SE Runtime Environment (build 1.8.0_77-b03)
Java HotSpot(TM) 64-Bit Server VM (build 25.77-b03, mixed mode)
Andrew
fonte
Este funciona para mim. Tenho o Windows 7 (64 bits). Mudei C: \ ProgramData \ Oracle \ Java \ javapath para o início de PATH, como você sugeriu. Obrigado!
softwarelover
1
Ei, funcionou! Não se esqueça de reiniciar o computador, obrigado.
Sandoval0992
12

Minha experiência:

Estou usando o Windows 8.1 e fiz o downgrade da versão JAVA de 1.8 para 1.7 e estava recebendo o mesmo erro.

Erro: a chave de registro 'Software \ JavaSoft \ Ja tem o valor' 1.7 ', mas' 1.8 'é necessária.

Eu apaguei java.exe , javaw.exe e javaws.ex e de C: \ Windows \ System32 pasta e funcionou para mim.

RJ_Singh
fonte
Isso não funcionará se houver outros executáveis ​​java para outras versões Java no caminho.
Underverse
9

Eu tive o mesmo problema. Uma solução simples que funcionou para mim é reorganizar as entradas no PATHfor JRE/JDK. Este problema começou a aparecer depois de instalar JRE 8cuja instalação colocou alguns arquivos executáveis ​​em System32 or SysWOW64diretórios, esses arquivos executáveis ​​estão bagunçando. Para resolver o problema:

  1. Crie uma variável de ambiente apontando para o início do JDK como JAVA_HOME.

    set JAVA_HOME=C:\Progra~1\Java\jdk1.8.0_45

  2. Coloque a entrada %JAVA_HOME%\binno início em sua variável de ambiente PATH. Anexando o valor existente de PATH. Por exemplo:

    path=C:\Program Files\Java\jdk1.8.0_45\bin;%path%

pratikch
fonte
3
esta é a melhor solução se você deseja manter várias versões do java lado a lado e se você não tem o privilégio de modificar o registro e remover arquivos da pasta windows \ system.
Heinz
3

Não excluí nenhum dos arquivos java.exe, mas alterei a ordem do meu sistema - variável "caminho" - de modo que refletisse% JAVA_HOME% \ bin como a primeira entrada. Isso funcionou.

turnip424
fonte
2

O erro é explícito ...

Erro: a chave de registro 'Software \ JavaSoft \ Java Runtime Environment' \ CurrentVersion 'tem o valor' 1.8 ', mas' 1.7 'é necessário.

Erro: não foi possível encontrar java.dll

Erro: não foi possível encontrar o Java SE Runtime Environment.

... você está tentando usar o java.exeexecutável 1.7 enquanto a chave de registro HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Runtime Environment> CurrentVersiontem o valor 1.8.

O tema recorrente para soluções propostas é que o erro é um erro de configuração . O erro pode ser resolvido de várias maneiras diferentes (por exemplo, reconfiguração do ambiente de usuários ou remoção de executáveis ​​java com os dedos cruzados e esperar que exista outro fallback java.exenos usuários %PATH%e que o fallbackjava.exe seja o executável correto).

A solução correta depende do que você está tentando alcançar: "você está tentando fazer o downgrade do jdk-8 para o jdk-7? Está tentando fazer o upgrade para o jdk-8? ..."

Etapas de reprodução

  1. instale jdk-7u80-windows-x64.exe

notas:

  • o java.exeexecutável disponível nos usuários %PATH%é instalado emC:\Windows\System32
  • a instalação não atualiza os usuários %PATH%
  • a HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment> CurrentVersionentrada de registro de string é criada (entre outras) com o valor1.7
  1. instale jdk-8u191-windows-x64.exe

notas:

  • os usuários %PATH%são atualizados para incluir C:\Program Files (x86)\Common Files\Oracle\Java\javapathcomo a primeira entrada
  • o os HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment> CurrentVersionvalor entradas de registro corda é atualizado para1.8
  1. atualizar a %PATH%variável de ambiente do usuário , removerC:\Program Files (x86)\Common Files\Oracle\Java\javapath

  2. em um novo prompt de comando java -version

Erro: a chave de registro 'Software \ JavaSoft \ Java Runtime Environment' \ CurrentVersion 'tem o valor' 1.8 ', mas' 1.7 'é necessário.

Erro: não foi possível encontrar java.dll

Erro: não foi possível encontrar o Java SE Runtime Environment.

Solução (ões)

  1. Solução da OP https://stackoverflow.com/a/29769311/1423507 é uma abordagem " cruzada de dedos e espero que haja um fallback java.exenos usuários %PATH%e que o executável do fallback seja correto" para o erro. Dadas as etapas de reprodução, remover o java.exe, javaw.exee javaws.exeexecutáveis C:\Windows\System32(apenas no meu caso) resultará em não ter mais nenhum java.exepresente nos usuários, %PATH%resultando no erro 'java' is not recognized as an internal or external command, operable program or batch file.que não é tanto uma solução.

  2. respostas https://stackoverflow.com/a/35775493/1423507 e https://stackoverflow.com/a/36516620/1423507 funcionam, mas você está voltando a usar java.exe1.7 (por exemplo, atualize o CurrentVersionvalor da chave de registro para corresponder à java.exeversão encontrada em os usuários %PATH%).

  3. certifique-se de que java.exe1.8 é o primeiro encontrado nos usuários %PATH%(como você faz isso é irrelevante), ou seja:

    • atualize os usuários %PATH%para incluir C:\Program Files (x86)\Common Files\Oracle\Java\javapathprimeiro (certifique-se de que os executáveis ​​nesse diretório estão corretos)
    • atualize os usuários %PATH%para incluir o caminho absoluto de seus binários java primeiro ( set PATH="C:\Program Files\Java\jre1.8.0_191\bin;%PATH%")
    • conjunto java variáveis de ambiente específico e atualizar os usuários %PATH%com eles ( set JAVA_HOME="C:\Program Files\Java"; set JRE_HOME=%JAVA_HOME%\jre1.8.0_191; set PATH=%JRE_HOME%\bin;%PATH%)
masseyb
fonte
@whoever_that_downvotes - esta resposta não pode ser aprimorada sem qualquer feedback construtivo. Deixe um comentário sobre "por quê" e talvez possa melhorar essa resposta para o benefício da comunidade.
masseyb
2

Eu tive este erro em alguns serviços do Windows que executam Java. No final, na minha máquina tentei desinstalar as outras versões do java.

Deixei apenas 1.8 e agora está tudo funcionando.

Menios
fonte
1

A resposta do aribeiro funcionou para mim - com pequenas alterações

  • Removi a referência a C: \ ProgramData \ Oracle \ Java \ javapath; da variável de ambiente Path
  • Criei / path / to / jdkhome como a primeira entrada em minha variável de ambiente PATH. Acho que só isso é tudo de que precisamos.
abdel
fonte
1

Quanto a mim no win7 64bit.

Copie o java.exe javaw.exe javaws.exe na pasta C:\Program Files\Java\jre1.8.0_91\bin to the C:\Windows\System32.

e abra o cmd, digite java -version.

C:\Users\HEcom>java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

Antes do acima, certifique-se de que a versão atual do registro seja 1.8

No menu INICIAR, digite "regedit" para abrir o editor do Registro

  1. Vá para "HKEY_LOCAL_MACHINE" no menu do explorador / árvore de registro do lado esquerdo
  2. Clique em "SOFTWARE" nos registros "HKEY_LOCAL_MACHINE"
  3. Clique em "JavaSoft" nos registros de "SOFTWARE"
  4. Clique em "Java Runtime Environment" na lista de registros "JavaSoft" aqui, você pode ver diferentes versões do java instalado
  5. Clique em "Java Runtime Environment" - No lado direito, você obterá 4-5 linhas. Selecione "CurrentVersion" e clique com o botão direito (selecione a opção de modificação) e certifique-se de que a versão seja "1.8"
Francis Bacon
fonte
Esta é uma ideia muito ruim. A pasta binários deve ser adicionada ao caminho em vez de mover os arquivos para uma pasta que já está no caminho. Pode causar uma dor de cabeça horrível se alguém tiver que atualizar o java no sistema e não tiver conhecimento sobre esta "solução". E essa é exatamente a origem do problema da operação ... Em vez disso, conserte o caminho.
Riwels
Mude I just MOVE para I just COPY e você estará pronto para continuar.
Matthieu
1

Minha solução para esse problema veio depois de ler e tentar todos os itens acima.

No meu caso, tentei fazer o downgrade do Java para usar impressões no Apache ActiveMQ. Depois de desinstalar todas as versões do Java e limpar o registro, estava recebendo o mesmo erro

Erro: a chave de registro 'Software \ JavaSoft \ Java Runtime Environment' \ CurrentVersion 'tem o valor' 1.7 ', mas' 1.8 'é necessário. "

No meu caso eu precisava para ir para variáveis de ambiente, editar caminho, abra o local JavaPath ( C:\ProgramData\Oracle\Java\javapath) e lá estava ela - três arquivos ( java.exe, javaw.exe, javaws.exe) que permaneceram da versão JRE8.

Depois de estabelecer esse fato, eu simplesmente troquei com os mesmos arquivos do C:\Windows\SysWOW64diretório (aqueles eram da JRE7versão) e tudo funcionou perfeitamente.

MikeG
fonte
1

Após a última atualização automática do Java, não consegui executar o Java a partir do prompt de comando.

Minha variável de caminho tinha 'C: \ ProgramData \ Oracle \ Java \ javapath;'

Não consegui fazer cd em 'C: \ ProgramData \ Oracle \ Java \ javapath;' da janela do prompt de comando, uma vez que não existia.

Removi C: \ ProgramData \ Oracle \ Java \ javapath; ' da variável de caminho e substituiu-o por 'C: \ Arquivos de programas \ Java \ jre1.8.0_141 \ bin;'

user20150603
fonte
Isso é muito mais um comentário do que uma resposta. A questão é sobre uma ferramenta muito específica, e deixando muito claro que java foi encontrado.
GhostCat
1

Você tem que definir sua pasta jdk na variável JAVA_HOME, adicionar% JAVA_HOME% ao seu caminho de variável

Exclua ou altere o nome de seu java.exe, javaw.exe e javaws em sua pasta system32

execute cmd.exe, java -version agora obtém a nova versão que você define em JAVA_HOME.

El mehdi AZROUR
fonte
1

Além da resposta de Anand Gupta, certifique-se de que nenhum outro java, exceto o que você precisa, seja usado. Execute which java( where javapara Windows) e veja quais executáveis ​​java são usados. Simplesmente exclua aqueles que você não deseja usar e se o que você precisa não estiver presente, adicione-o ao PATH.

Sergey K.
fonte
0

Primeiro você deve ter o Java 7. Se não tiver, instale-o primeiro (não sei o que você está usando, Linux, Mac, yum, apt, homebrew, você deve descobrir por si mesmo).

Se você já tem o Java 7, execute:

echo $JAVA_HOME

Saída deve ser algo como isto: /usr/lib/jvm/java-8-oracle. Próximo a este diretório, você deverá ver o java-7diretório. Depois de encontrá-lo, execute

export JAVA_HOME=${java-7-dir}

mudança {java-7-dir} com o caminho do seu diretório. Então você pode executar seu comando.

Esta é apenas uma solução temporária. Para alterá-lo permanentemente, coloque o comando acima em seu~/.bashrc arquivo.

EDIT: Se você estiver usando o Windows , altere a variável de ambiente de JAVA_HOMEpara o caminho do diretório de instalação do Java 7.

mtyurt
fonte
@AnandGupta Eu adicionei o caso do Windows.
mtyurt
No caso do Linux, você precisa fornecer o caminho para o binário Java em JAVA_HOME. Por exemplo, /usr/java/jdk1.5.0_07/bin/java. No caso do Windows, basta o diretório de instalação.
Aditya K
0

Minha pequena contribuição, por compartilhar o mesmo problema com a versão Talend Open Studio 64 bits.

  1. Inicie .. \ TOS_DI-Win32-20150702_1326-V6.0.0 \ TOS_DI-win-x86_64.exe manualmente (sem vincular um menu de inicialização do Windows)
  2. e esta mensagem de erro de registro aparece

Para resolver isso, remova todos os arquivos java.exe, javaw.exe e javaws.exe em c: \ ProgramData \ Oracle \ Java \ javapath \

e o TOS começa com a versão de 64 bits corretamente!

Undigo Factory
fonte
0

Remova-o do caminho do sistema:

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem

E isso vai resolver o problema de atualização da versão java de 1.7 para 1.8

usuário5645373
fonte
1
Você poderia nos dizer por quê?
Vinay Prajapati
0

Existe em algum lugar outro java.exe da versão 1.8 do jre que está no "caminho", você deve localizar e excluí-lo se for possível. pode estar no usuário tempdata para aplicativos que precisam do jre.

masoudifar
fonte
0

Altere as variáveis ​​de sistema JAVA_BIN e JAVA_HOME e reinicie o sistema ou talvez faça login novamente. Você está tendo esse erro porque ainda é o caminho jdk1.7. No Windows é assim: insira a descrição da imagem aqui

Tiina
fonte
0

Basta instalar o Java SE Runtime Environment JRE 7!

Agora você vê "java 7" e "java 8" em "Programas e recursos" no "Painel de controle"

Funcionou para mim

Tenesi
fonte
0

Uma possível solução para este problema é adicionar na pasta Sencha CMD um arquivo bat conforme sugerido neste tópico Sencha Cmd 5 + Java 8 Error .

O lote terá o nome "sencha.bat" com este código:

@echo off
set JAVA_HOME=<YOUR JDK 7 HOME>
set PATH=%JAVA_HOME%\bin;%PATH%
set SENCHA_HOME=%~dp0
java -jar "%SENCHA_HOME%\sencha.jar" %*

Coloque-o na pasta sencha, no meu caso é

C:\Users\<YOUR USER>\bin\Sencha\Architect\Cmd\6.2.0.103

A etapa a seguir é alterar a variável de ambiente PATHEXT. Altere as variáveis ​​do usuário para ter o menor impacto possível.

Eu mudo de

COM;.CMD;.EXE;.BAT;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

para

COM;.BAT;.EXE;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

A ideia é fazer com que o Windows execute os arquivos .bat antes dos arquivos .exe. Isso é importante porque na pasta sencha já existe um arquivo "sencha.exe". E na linha de comando, se você digitar "sencha", ele executará "sencha.exe" em vez de "sencha.bat".

Essa foi a única solução que funcionou porque sou muito restrito quando se trata de permissões.

Adilson Cabral
fonte
0

Meu sistema: - Windows 8.1

Ambientes Java

  • C: \ JavaEnvironment \ Java \ jdk1.8.0_161
  • C: \ JavaEnvironment \ Java \ jdk1.7.0_75

Recentemente instalei o Oracle 11g XE e recebi a mensagem de erro mencionada ao acessar o comando "java" no prompt de comando.

Eu verifiquei minhas variáveis ​​de ambiente, verifiquei a sequência (conforme mencionado nas respostas anteriores) e detectei que minha variável PATH do sistema tinha a seguinte entrada como primeira entrada:

C: \ OracleDatabase \ oraclexe \ app \ oracle \ product \ 11.2.0 \ server \ bin ;

Mudei a sequência e defini o caminho JDK como primeira entrada:

insira a descrição da imagem aqui

Eu repliquei a mesma mudança para a variável do usuário: caminho

insira a descrição da imagem aqui

Após terminar a atividade acima, reiniciei o prompt de comando e executei o comando java -version e o problema desapareceu. Ele exibiu o Java 8 como a versão atual.

Philip Dilip
fonte
-1

Eu tive o problema semelhante. Mover o caminho JDK e JRE para o topo da variável de caminho resolveu o problema (que tem prioridade sobre o que está presente em System32)

Por exemplo, aqui está o meu:

insira a descrição da imagem aqui

Ramesh
fonte
-2

Desinstale o Java 8 da sua lista de programas. Seguindo os passos abaixo: -

Na área de trabalho, clique no menu Iniciar (ou bola inicial) no canto inferior esquerdo da tela. Vá para o Painel de Controle. Clique em Programas e recursos. Selecione Java8 e clique em Desinstalar

verma nitish
fonte
-2

Mate todos os aplicativos relacionados ao java no gerenciador de tarefas e, em seguida, exclua o Java.exe, Javaw.exe e Jawaws.exe de C: \ windows \ System32

Isso deve resolver seu problema ... :)

Brijesh Rana
fonte
você pode deixar claro como isso resolveria o problema em questão?
Muhammad Mamoor Khan
-3

apenas fiz isso e funcionou

HKLM> SOFTWARE> JavaSoft> Java Runtime Environment

apenas altere manualmente a versão atual para 1.7.

lol ... mas funcionou!

user6180925
fonte