Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Determining location of JVM executable during runtime

Tags:

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?

like image 960
Samad Lotia Avatar asked Aug 02 '10 22:08

Samad Lotia


People also ask

How do I know my JVM path?

In Windows : inside your JRE, you will have a folder like this : C:\Program Files (x86)\Java\jre7\bin\client --> this directory contains the client JVM jvm.

How do I know if Java is executable?

You need to find the Java executable file (java.exe file) on your computer hard drive. It is often located in the "Program Files\Java" or "Program Files (x86)\Java" folder, within a possible subfolder below the Java folder. Once you find the file, select it and click OK.

How do I run a JVM file?

The way to start a jvm is by invoking the main, either by invoking a jar using java -jar MyJar or by simply running main class from an IDE. Yes, Multiple jvm instances can be run on a single machine, they all will have their own memory allocated. There will be that many jvms as many main programs you run.


1 Answers

You could always just use os.name to check if the user is running Windows or not. That'll work on OS X, Linux and Windows at

String jvm_location; if (System.getProperty("os.name").startsWith("Win")) {     jvm_location = System.getProperties().getProperty("java.home") + File.separator + "bin" + File.separator + "java.exe"; } else {     jvm_location = System.getProperties().getProperty("java.home") + File.separator + "bin" + File.separator + "java"; } 
like image 196
Xenxier Avatar answered Oct 05 '22 08:10

Xenxier