¿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
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?
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.
System.out.println(System.getProperty("java.version"));
Otras propiedades here
Eso solo dice la versión del JRE que ejecuta el código, no lo que JDK/JRE están instalados – Jonik
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 –
- 1. Configurar programáticamente JRE instalados en Eclipse
- 2. iOS get Configuration Profiles que están instalados
- 3. ¿Cómo puedo detectar si Jquery y Jquery UI están instalados, y qué versiones están instaladas?
- 4. Determine programáticamente qué hilo de Java contiene un bloqueo
- 5. ¿Dónde están físicamente almacenados los conjuntos instalados en el GAC?
- 6. Determine el controlador de dominio actual programáticamente
- 7. Determine si en la página del producto programáticamente en Magento
- 8. ¿Instalando todos los paquetes CRAN que aún no están instalados?
- 9. Qué lenguajes de programación están instalados en Windows XP de forma predeterminada
- 10. ¿Cómo especifico el directorio donde están instalados los paquetes NuGet?
- 11. ¿Cómo saber si asp.net 3.5 sp1 y asp.net mvc están instalados en el servidor?
- 12. Qué identificadores de componentes debo buscar para detectar si están instalados los PIA de Office 2010
- 13. Determine si mi PC admite HW Virtualization
- 14. Determine qué versión de OpenCV
- 15. ¿Qué es la pestaña # 13119 en mi caja de herramientas VS 2008?
- 16. Modificación de un virtualenv de manera que los paquetes instalados en site-packages globales están disponibles
- 17. Determine qué proceso está bloqueando el portapapeles
- 18. ¿Qué me impide usar IIS Express exclusivamente en mi caja de desarrollo?
- 19. macdeployqt en frameworks instalados homebrew
- 20. Determine qué celda JTable se hace clic
- 21. ¿Por qué reemplazar mi clase de caja Scala con un extractor rompió mi función de orden superior?
- 22. ¿Cuándo debo llamar al método de inicio() de los widgets instalados programáticamente?
- 23. Delphi & Lazarus ambos instalados
- 24. Determine la velocidad en Internet mediante programación
- 25. ¿Cómo establecer mi dirección de IP programáticamente?
- 26. de los paquetes instalados en I
- 27. Se están agregando barras invertidas en mi cookie en Python
- 28. ¿Qué eventos están ligados?
- 29. pycurl instalados pero no encontraron
- 30. Determine programáticamente las "popularidades" relativas de una lista de elementos (libros, canciones, películas, etc.)
Cletus se puede defender por qué no haría una búsqueda exhaustiva? Intuitivamente estoy de acuerdo aquí, pero estoy buscando razones de peso. –
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. –
Sugiero que limite su búsqueda a C: \ Program Files \ y la variable de entorno% PATH% además de las dos variables enumeradas anteriormente. –