Uma técnica à prova de balas fácil de verificar se o sistema tem JRE (windows)

StackOverflow https://stackoverflow.com/questions/812100

  •  03-07-2019
  •  | 
  •  

Pergunta

Desculpe minha pergunta novato: P Se eu promp "java -version" no cmd em um sistema Windows, eu sou garantida que o sistema será capaz de executar arquivos .jar se Eu não obter qualquer erro ?

Foi útil?

Solução

Eu acho que a única maneira garantida para verificar se há um JRE é tentar rodar um pequeno programa Java.

Ou talvez nem isso - Suponho concebível um sistema poderia ter apenas uma parte da biblioteca padrão Java instalado, caso em que um pequeno teste JAR belo trabalho poder, mas um programa completo talvez não. Embora eu não posso imaginar por que alguém iria para a dificuldade de definir um sistema dessa forma.

Outras dicas

A partir da linha de comando que você deve ser capaz de invocar "java --version" que retornará um erro se o Java não está instalado ou as informações da versão atualmente instalado.

Bem, obviamente não. Você pode colocar um arquivo vazio chamado em qualquer lugar java.bat no PATH, como C: \ Windows \ System32. Invocando "java" não deu qualquer erros, mas isso não significa que há um JRE instalado.

Por que não executar um arquivo de classe pequena, o que escrever um valor para um arquivo que você então verificar? Se ele falhar, ele não funciona.

Um valor bom pode ser o valor da propriedade do sistema java.version.

No Windows, você pode verificar o registro em HKLM \ SOFTWARE \ JavaSoft \ Java Plug-in. A partir daí, cada subchave é um JRE instalado.

Editar Aqui é código C # que irá retornar um array de strings com a instalação do JRE

public string[] GetInstalledJavas() {
        // hold the registry subkeys that list the installed JRE's
        string[] jres = null;
        try {
            RegistryKey myKey = Registry.LocalMachine;
            myKey = myKey.OpenSubKey(@"SOFTWARE\JavaSoft\Java Plug-in"); // read-only
            jres = myKey.GetSubKeyNames();
        } catch (Exception myException) {
            Console.Writeline(myException.ToString());
        }
        return jres;
}

Eu realmente sugerir, se você está apenas em causa sobre a verificação em máquinas Windows, verificando o registro para um manipulador para JNLP ... que devem garantir a presença de um JRE relativamente recente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top