Search code examples
windowspathjavajavaw

Find absolute java.exe path programmatically from java code


If I have a java jar or class file which is launched by the user (assuming java path is set in environment variables), so how can i from within the code, figure out absolute path of java.exe/javaw.exe from which this file is being launched.

Like on ubuntu we can run: % which java and it shows the path.

However on windows, if i check System.getenv() it may happen that there are multiple path's found e.g for old or new version. If through cmd line, I run java -version it does not show the path.

Can you tell me either through pure java or command line on windows how is it possible to find out the location of javaw.exe?


Solution

  • String javaHome = System.getProperty("java.home");
    

    Can you tell me either through pure Java ... on windows how is it possible to find out the location of javaw.exe?

    E.G.

    import java.io.File;
    
    class JavawLocation {
    
        public static void main(String[] args) {
            String javaHome = System.getProperty("java.home");
            File f = new File(javaHome);
            f = new File(f, "bin");
            f = new File(f, "javaw.exe");
            System.out.println(f + "    exists: " + f.exists());
        }
    }
    

    Output

    C:\Program Files (x86)\Java\jdk1.6.0_29\jre\bin\javaw.exe    exists: true
    Press any key to continue . . .
    

    And yes, I am confident that will work in a JRE.