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?