如何find我的JVM创build的特定java.exe的位置?

我不想find系统的JAVA_HOME。 我不想查找系统variables。

我需要从它启动的.jar中确切知道独立(捆绑的JRE)所在的位置。

示例:用户使用捆绑的.jre安装应用程序,并启动它。 程序不仅需要确定当前的运行目录,还需要确定与之捆绑在一起的java.exe的位置。 我可以根据当前运行目录的相对path进行假设,但我更喜欢一种绝对确定当前正在运行的java.exe的完整path的方法。 我不相信这是一个重复的问题,因为我已经找不到它的实例(或答案),通过返回到系统或用户configuration文件java_home来回答。

我认为这将是一个简单的任务,但迄今没有find答案。

如果你在Windows上,看看这个帖子上的最后一个答案:[ 从java代码编程式查找绝对java.exe路径

这是代码

 class WhichJava { public static void main(String args[]){ String libPath = System.getProperty("java.library.path"); String exePath = libPath.substring(0, libPath.indexOf(';')) + ((System.console() == null)? “\\javaw.exe" :”\\java.exe"); System.out.println(exePath); } } 

我没有试过这个。 只是一个想法:

  1. 获取当前的进程ID

Java程序如何获得自己的进程ID?

  1. 获取PID的特定Windows信息(从Java执行并处理命令)。

https://superuser.com/questions/768984/show-exe-file-path-of-running-processes-on-the-command-line-in-windows