这就是问题:我的 Java 应用程序正在运行,那么如何获取运行它的 java 二进制文件的路径/名称?例如,Windows 中的“C:\Program Files\Java\jre6\bin\java.exe”或 Linux 中的“/usr/bin/java”。我需要一个独立于平台的解决方案,最好只依赖于 JDK。
问题的上下文如下。我正在开发两个 Java 应用程序,比如说 FirstApplication 和 SecondApplication。FirstApplication 将使用ProcessBuilder API启动 SecondApplication 。问题是我需要告诉 Java 二进制文件的路径以启动 SecondApplication。例如,
String cmd = "C:\Program Files\Java\jre6\bin\java.exe -cp <second application classpath> com.secondapplication.MainClass";
Process p = new ProcessBuilder(cmd).start();
可能的替代解决方案可能是假设有一个通过 PATH 系统变量可用的 java 二进制文件,或者假设设置了 JAVA_HOME 系统变量。但情况可能并非总是如此。此外,应用程序的最终用户(针对其他 Java 开发人员以及最终用户)可能在他的系统上安装了多个 JVM,并且可能会执行 FirstApplication 以明确他想要的 JVM。理想情况下,SecondAplication 应该使用与 FirstApplication 完全相同的 Java 二进制文件运行,而不依赖于此类系统变量。
谢谢