以平台无关的方式获取当前的java可执行路径和文件名

时间:2014-05-03 09:30:26

标签: java processbuilder

我需要使用ProcessBuilder执行java应用程序。我还需要在调用应用程序使用的被调用进程中使用相同的java可执行文件。

是否有一种独立于平台的方法来检索当前的java可执行文件路径和文件名?

我已经看到了类似的代码片段:

public static boolean isWindows() {
    return (System.getProperty("os.name").toLowerCase().indexOf("win") >= 0);
}

public static String getJavaExecutablePath() {

    String executable = "java";
    if (isWindows()) {
       executable = executable + ".exe";
    }
    File path = new File(System.getProperty("java.home"), "/bin/" + executable);
    return path.getAbsolutePath();
}

上述代码可能需要改进才能使用File.separator

上述所有内容是否是必需的,或者还有其他需要考虑的因素,例如区分大小写?

理想情况下,会有一个可用于获取操作系统路径的库,但这可能是针对不同论坛的问题。

1 个答案:

答案 0 :(得分:1)

首先,对您的要求最重要的是 System.getProperty(" java.home") ,您已经得到了它已经

其次,不要担心区分大小写,路径' $ JAVA_HOME / bin / java'在每个java版本中总是小写,并且已经有许多其他项目依赖于此。

最后,你不必使用' /'或者' \'建立绝对路径,考虑一下:

File path = new File(new File(System.getProperty("java.home"), "bin"), executable);

正如您所提到的, File.separator 做了类似的事情,但这是在谈论一个字符串,文件谈论文件。

Here is a discussion about File path