Minha equipe de desenvolvimento foi recentemente forçada a um ambiente de desenvolvimento remoto onde não temos acesso total aos servidores. Antes da mudança, tínhamos um JAR que estava funcionando bem em Java 1.7 x64 junto com JRE 7. Quando mudamos para o novo servidor, nosso JAR estava funcionando bem, mas então um dos administradores do servidor "atualizou" nosso Java para um mais antigo versão e desinstalou o que estávamos usando. Não me pergunte por quê, eu não sei. Reinstalei o Java 1.7 e desinstalei o 1.6 junto com os JREs.
O seguinte problema ocorre no tempo de execução, não há erros de compilação:
Registry key 'Software\JavaSoft\Java Runtime Environment\CurrentVersion'
has value '1.7', but '1.6' is required.
Error: could not find java.dll
Error: could not find Java SE Runtime Environment.
Executei o mesmo JAR no meu laptop sem problemas. Tanto o servidor quanto meu laptop têm JDK 1.7 e JRE 7 nas respectivas variáveis% HOME% e PATH do sistema. Até reinstalei o JRE 6 e coloquei-o posteriormente nas variáveis PATH do ambiente do sistema com o mesmo resultado.
Eu também alterei o registro para olhar para 1.6 e isso resulta no seguinte, que eu pesquisei e parece ser devido a vários Javas instalados (levando de volta ao meu problema original):
Exception in thread "main" java.lang.UnsupportedClassVersionError: ... :
Unsupported major.minor version 51.0
Eu apreciaria qualquer insight que vocês tivessem, pois estive pesquisando vários fóruns, mas nada parece ter exatamente o meu problema. Além disso, isso aconteceu em outro servidor que estamos usando. Obrigado!
Atualização: Sem sorte em recompilar o JAR para 1.6 ou 1.7 e combinar o JDK. Além disso, por que uma versão mais recente do Java quebraria uma versão compilada mais antiga?
fonte
java.exe
,javaw.exe
ejavaws.exe
está armazenado emWindows/SysWOW64
. Além disso, por alguma razão quando eu instalei o 1.8 do SDK instaladojava.exe
,javaw.exe
ejavaws.exe
sobC:/ProgramData/Oracle/Java/javapath
. Não sei por quê, mas eu os apaguei também ejava -version
ainda funciona.Acabei de ter o erro semelhante ao instalar o java 8 (jdk e jre) em um sistema que já executa o Java 7.
Meu ambiente foi configurado corretamente (Path & java_home definido corretamente), mas o problema surge da maneira como os instaladores Java anteriores ao 8 funcionavam, que costumavam copiar os três executáveis (java.exe, javaw.exe & javaws.exe ) para o diretório do sistema Windows. Eles permanecem, a menos que sejam substituídos por uma nova instalação pré-8.
No entanto, o instalador do Java 8 cria links simbólicos em um novo diretório, C: \ ProgramData \ Oracle \ Java \ javapath, apontando para a localização JRE 8 real.
Isso significa que você realmente executará os 7 exes antigos, mas usará as novas 8 DLLs.
Portanto, a solução é simplesmente deletar os 3 exes Java, como acima, do diretório do sistema Windows.
Se você estiver executando o Java de 32 bits em um Windows de 64 bits, os exes estarão em Windows \ SysWOW64, caso contrário, em Windows \ System32.
fonte
Excluí os arquivos java em windows / system32 e também removi c: \ ProgramData \ Oracle \ Java \ javapath da variável PATH, porque havia 3 links simbólicos para arquivos java 1.8.
Eu tinha JDK 1.7 na variável% JAVA_HOME% e java1.7 / bin no PATH.
PS1: Meu problema era entre Java 1.7 e Java 1.8.
PS2: Não posso adicionar isso como comentário à resposta de Victor porque não tenho pontos suficientes.
fonte
No menu INICIAR, digite "regedit" para abrir o editor do Registro
Vá para "HKEY_LOCAL_MACHINE" no menu do explorador / árvore de registro do lado esquerdo
Clique em "SOFTWARE" nos registros "HKEY_LOCAL_MACHINE"
Clique em "JavaSoft" nos registros de "SOFTWARE"
Clique em "Java Runtime Environment" na lista de registros "JavaSoft" aqui, você pode ver diferentes versões do java instalado
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). Altere a versão para "1.7"
Agora a magia foi completada
fonte
Não sei se alguém ainda está seguindo este tópico, mas recentemente tive esse problema quando tentei iniciar o ActiveMQ 5.10 como um serviço do Windows.
Eu não tinha um caminho JAVA_HOME definido. Eu tinha o Java 6 e o Java 7 instalados, mas a versão padrão era v7. (ou seja, se eu abrir uma janela de comando e digitar "java -version").
Aqui é onde estava a pista - "java -version" retornou "Java HotSpot (TM) 64-Bit Server VM (build 23.1-b03, modo misto)" mas eu tinha instalado o serviço Win32 ...
Acontece que, se você usar o wrapper Win32 em uma máquina de 64 bits, ele de alguma forma decide usar uma versão diferente do Java ...
Portanto, minha correção foi desinstalar a versão de 32 bits do wrapper e instalar a versão de 64 bits. aversão em minha máquina; apenas hábito, eu acho ... Mas felizmente resolvi o problema eventualmente ...
fonte
Para meu Win7
Paradox estava sendo java.exe e javaw.exe na pasta System32. Abrindo essa pasta, não consegui vê-los, mas usando a pesquisa no menu Iniciar, recebo links para esses arquivos e os removo. A próxima pesquisa me deu links para arquivos de JAVA_HOME
Magia )
fonte
Mude para o diretório correto,
java.exe
ou seja, vá para a versão necessária do JDKjava.exe
Execute o a
java.exe
partir deste diretório, ele tem precedência sobre as configurações de registro e $ PATH.fonte
Resolvi esse problema desinstalando o Java 1.8
fonte
O frasco foi compilado para ser
1.6
compatível. É por isso que você obtém este erro. Duas resoluções:1) Use Java 1.6
OU
2) Recompile o frasco para ser compatível com o seu ambiente
1.7
fonte
Usando o regedit, remova as entradas correspondentes a java 7. Isso funcionará.
fonte