2009-07-27 14 views
10

¿Existe una forma estándar de hacerlo? Me doy cuenta de que esto puede ser algo dependiente de la plataforma. Nuestro producto en este momento solo es compatible con Windows, así que supongo que eso es lo que me interesa en este momento. Lo único que se me ocurre es escanear el registro o rastrear el sistema de archivos. Escanear el sistema de archivos parece que puede llevar mucho tiempo, y el registro puede no ser confiable. ¿Debería hacer ambas cosas? ¿Cualquier otra sugerencia? Traté de buscar una API para hacer esto sin suerte.Determine programáticamente qué JDK/JRE están instalados en mi caja

Respuesta

3

Primero comenzaría por buscar la variable de entorno JAVA_HOME (y posiblemente JDK_HOME, aunque eso es mucho menos común) y luego determinar qué versión es y si es un JDK o JRE.

Después de eso, compruebe si hay ubicaciones comunes. Averigüe el directorio de archivos de programa del sistema (no se limite a suponer que es C: \ Archivos de programa aunque sea el 99.5% de las veces) y busque ubicaciones de instalación comunes debajo de eso (por ejemplo, Java).

No haré una búsqueda exhaustiva.

Vale la pena preguntar: ¿realmente necesita encontrar JDK de esta manera? ¿No puede simplemente preguntarle al usuario qué JDK desea utilizar, posiblemente sugiriendo alguno que ya haya encontrado fácilmente?

+0

Cletus se puede defender por qué no haría una búsqueda exhaustiva? Intuitivamente estoy de acuerdo aquí, pero estoy buscando razones de peso. –

+0

Una búsqueda exhaustiva requeriría buscar en todos los discos duros los archivos java.exe o javac.exe (asumiendo ventanas) lo que podría llevar mucho tiempo. –

+0

Sugiero que limite su búsqueda a C: \ Program Files \ y la variable de entorno% PATH% además de las dos variables enumeradas anteriormente. –

1

Probablemente busque una combinación de buscar las claves de registro instaladas en Java y rastrear las ubicaciones predeterminadas para la instalación (que no debería llevar demasiado tiempo).

Un enfoque alternativo sería agrupar una pequeña aplicación Java que imprime varios detalles, como la ejecución de JVM.

34
System.out.println(System.getProperty("java.version")); 

Otras propiedades here

+0

Eso solo dice la versión del JRE que ejecuta el código, no lo que JDK/JRE están instalados – Jonik

+0

Disculpa, no entendí la pregunta. Puede usar el registro y si no se encontró nada, pregunte al usuario. La clave es HKEY_LOCAL_MASHINE/SOFTWARE/JavaSoft/Java Development Kit –

Cuestiones relacionadas