Process 如何获取运行我的应用程序的java二进制文件的路径/名称?

Process 如何获取运行我的应用程序的java二进制文件的路径/名称?,process,java,Process,Java,这就是问题所在:我的Java应用程序正在运行,那么如何获取运行它的Java二进制文件的路径/名称呢?例如,Windows中的“C:\Program Files\Java\jre6\bin\Java.exe”或Linux中的“/usr/bin/Java”。我需要一个独立于平台的解决方案,最好只依赖JDK 问题的背景如下。我正在开发两个Java应用程序,比如说FirstApplication和SecondApplication。第一个应用程序将使用启动第二个应用程序。问题是我需要告诉Java二进制文

这就是问题所在:我的Java应用程序正在运行,那么如何获取运行它的Java二进制文件的路径/名称呢?例如,Windows中的“C:\Program Files\Java\jre6\bin\Java.exe”或Linux中的“/usr/bin/Java”。我需要一个独立于平台的解决方案,最好只依赖JDK

问题的背景如下。我正在开发两个Java应用程序,比如说FirstApplication和SecondApplication。第一个应用程序将使用启动第二个应用程序。问题是我需要告诉Java二进制文件的路径来启动第二个应用程序。比如说,

String cmd = "C:\Program Files\Java\jre6\bin\java.exe -cp <second application classpath> com.secondapplication.MainClass";
Process p = new ProcessBuilder(cmd).start();
String cmd=“C:\Program Files\Java\jre6\bin\Java.exe-cp com.secondapplication.MainClass”;
进程p=newProcessBuilder(cmd.start();
可能的替代解决方案可以是假设有一个通过PATH系统变量可用的java二进制文件,或者假设设置了java_HOME系统变量。但情况并非总是如此。此外,应用程序的最终用户(针对其他Java开发人员以及最终用户)可能在其系统上安装了多个JVM,并且可能会执行第一个应用程序,明确说明他想要什么JVM。理想情况下,第二个应用程序应该使用与第一个应用程序完全相同的Java二进制文件运行,而不依赖于这样的系统变量


感谢您使用java.home属性。这篇文章的副本:好的,我知道了。但是仍然不能确定一点:如果用户使用“javaw”而不是“java”执行,或者其他任何可以命名为可执行文件的东西,该怎么办?有关
javaw
的信息,请参阅