Come si ottiene la posizione dell'eseguibile della JVM in esecuzione durante il runtime? Vorrei creare un'istanza di un'altra JVM come sottoprocesso utilizzando la classe ProcessBuilder.Determinazione della posizione dell'eseguibile JVM durante il runtime
Sono consapevole che esiste la proprietà di sistema java.home
, ma questa non specifica la posizione dell'eseguibile JVM. Capisco che potrei fare qualcosa di simile per ottenere il percorso:
System.getProperties().getProperty("java.home") + File.pathSeparator + "bin" + File.pathSeparator + "java"
Questo codice non è indipendente dalla piattaforma, perché il nome del file eseguibile di Windows è java.exe
, non java
. Esiste un modo per ottenere il percorso dell'eseguibile JVM che tenga conto delle idiosincrasie della piattaforma?
JAVA_HOME punta al JDK e non al JRE. Quindi non sei fortunato quando l'utente non ha installato il JDK. Inoltre I * do * ha il JDK e non ha la variabile di ambiente. Ancora tutto funziona bene. Anche su Windows è possibile rilasciare '.exe' sul nome del file per i programmi che si desidera eseguire. – Joey
Con la proprietà di sistema 'java.home', non mi riferisco a una variabile di ambiente; piuttosto, intendo la proprietà che esiste in 'System.getProperties()'. Ho verificato che i JRE hanno la proprietà System di 'java.home'. È utile sapere che l'estensione '.exe' è facoltativa in Windows. Grazie. –
Si può fare wath sul primo commento e assumere "bin/java.exe" su Windows e assumere "bin/java" su altre piattaforme. C'è anche "javaw.exe" da considerare a seconda di cosa stai provando a fare. –