How does one obtain the location of the executable of the currently running JVM during runtime? I would like to instantiate another JVM as a subprocess using the ProcessBuilder class.
I am aware that there is the java.home
System property, but this doesn't specify the location of the JVM executable. I understand I could do something like this to get the path:
System.getProperties().getProperty("java.home") + File.pathSeparator + "bin" + File.pathSeparator + "java"
This code isn't platform independent, because the Windows executable's name is java.exe
, not java
. Is there a way to get the path of the JVM executable that takes the platform's idiosyncrasies into account?
.exe
on the file name for programs you want to run. – Deakinjava.home
System property, I am not referring to an environment variable; rather, I mean the property that exists inSystem.getProperties()
. I have verified that JREs have the System property ofjava.home
. It's useful to know that the.exe
extension is optional in Windows. Thanks. – Falsify