¿Cómo se obtiene la ubicación del archivo ejecutable de la JVM actualmente en ejecución durante el tiempo de ejecución? Me gustaría crear una instancia de otra JVM como un subproceso utilizando la clase ProcessBuilder.Determinación de la ubicación del ejecutable de JVM durante el tiempo de ejecución
Soy consciente de que existe la propiedad del sistema java.home
, pero esto no especifica la ubicación del ejecutable JVM. Entiendo que podía hacer algo como esto para obtener la ruta:
System.getProperties().getProperty("java.home") + File.pathSeparator + "bin" + File.pathSeparator + "java"
Este código no es independiente de la plataforma, porque el nombre del ejecutable de Windows es java.exe
, no java
. ¿Hay alguna manera de obtener la ruta del ejecutable de JVM que tenga en cuenta la idiosincrasia de la plataforma?
JAVA_HOME apunta al JDK y no al JRE. Entonces no tiene suerte cuando el usuario no tiene instalado el JDK. También I * do * tengo el JDK y no tengo la variable de entorno. Todavía todo funciona bien. También en Windows puede colocar el '.exe' en el nombre del archivo para los programas que desea ejecutar. – Joey
Por la propiedad del sistema 'java.home', no me refiero a una variable de entorno; más bien, me refiero a la propiedad que existe en 'System.getProperties()'. He verificado que los JRE tienen la propiedad del sistema de 'java.home'. Es útil saber que la extensión '.exe' es opcional en Windows. Gracias. –
Puede hacer wath el primer comentario dice y asumir "bin/java.exe" en Windows y asumir "bin/java" en otras plataformas. También hay "javaw.exe" a considerar dependiendo de lo que está tratando de hacer. –