Una técnica a prueba de balas fácil para comprobar si el sistema tiene jre (ventanas)

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

  •  03-07-2019
  •  | 
  •  

Pregunta

Lo siento, mi pregunta para principiantes: P Si pido " java -version " en el cmd de un sistema de Windows, ¿tengo garantía de que el sistema podrá ejecutar archivos .jar si no obtengo ningún error ?

¿Fue útil?

Solución

Supongo que la única forma garantizada de comprobar si hay un JRE es intentar ejecutar un pequeño programa Java.

O tal vez ni siquiera eso: supongo que posiblemente un sistema podría tener solo una parte de la biblioteca estándar de Java instalada, en cuyo caso un JAR de prueba pequeño podría funcionar bien pero un programa completo podría no funcionar. Aunque no puedo imaginar por qué alguien se tomaría la molestia de configurar un sistema de esa manera.

Otros consejos

Desde la línea de comandos debería poder invocar " java --version " que devolverá un error si java no está instalado o la información de la versión instalada actualmente.

Bueno, obviamente no. Puede poner un archivo vacío llamado java.bat en cualquier caso en PATH, como C: \ Windows \ System32. Invocando " java " no producirá ningún error, pero no significa que haya un JRE instalado.

¿Por qué no ejecuta un archivo de clase pequeño, que escribe un valor en un archivo que luego verifica? Si falla, no funciona.

Un buen valor podría ser el valor de la propiedad del sistema java.version.

En Windows, puede consultar el registro en HKLM \ SOFTWARE \ JavaSoft \ Java Plug-in. A partir de ahí, cada subclave es un JRE instalado.

editar Aquí está el código C # que devolverá una serie de cadenas con los JRE instalados

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;
}

En realidad, sugeriría que, si solo te preocupa revisar las máquinas con Windows, buscar en el registro un JNLP ... debería garantizar la presencia de un JRE relativamente reciente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top