从java代码以编程方式查找绝对java.exe路径

Joh*_*dep 16 java windows path javaw

如果我有一个由用户启动的java jar或类文件(假设在路径变量中设置了java路径),那么如何从代码中找出java.exe/javaw.exe的绝对路径文件正在启动.

就像在ubuntu上我们可以运行:% which java它显示路径.

但是在Windows上,如果我检查System.getenv()可能会发生多个路径,例如旧版本或新版本.如果通过cmd行,我运行java -version它不会显示路径.

你能告诉我通过纯java或Windows命令行如何找到javaw.exe的位置?

And*_*son 24

String javaHome = System.getProperty("java.home");
Run Code Online (Sandbox Code Playgroud)

你能告诉我通过纯Java ...在Windows上如何找到javaw.exe的位置?

例如

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());
    }
}
Run Code Online (Sandbox Code Playgroud)

产量

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

是的,我相信这将在JRE中发挥作用.

  • 但是JAVA_HOME不一定是用于启动当前运行的应用程序的java.exe.我安装了三个不同的JDK,只有一个JAVA_HOME. (2认同)
  • @a_horse_with_no_name,是的你是对的,但安德鲁的回答是我想要的.我正在尝试System.getenv("JAVA_HOME")而我需要的是:System.getProperty("java.home"); (2认同)