如何在运行时获取当前运行的JVM的可执行文件的位置?我想使用ProcessBuilder类实例化另一个JVM作为子进程。在运行时确定JVM可执行文件的位置
我知道有java.home
系统属性,但是这并没有指定JVM可执行文件的位置。我知道我可以做这样的事情来获取路径:
System.getProperties().getProperty("java.home") + File.pathSeparator + "bin" + File.pathSeparator + "java"
此代码不是独立于平台的,因为Windows可执行文件的名字为java.exe
,不java
。有没有办法让JVM可执行文件的路径考虑到平台的特性?
JAVA_HOME指向JDK而不是JRE。所以如果用户没有安装JDK,那么你的运气不好。另外我*做*拥有JDK并且没有环境变量。还是一切正常。同样在Windows上,您可以将“.exe”放在要运行程序的文件名上。 – Joey 2010-08-02 22:57:06
通过'java.home'系统属性,我不是指环境变量;相反,我的意思是存在于'System.getProperties()'中的属性。我已经验证JRE具有'java.home'的System属性。 在Windows中知道“.exe”扩展名是可选的,这很有用。谢谢。 – 2010-08-02 23:00:04
你可以在Windows上做第一个注释并假设“bin/java.exe”,并假设其他平台上的“bin/java”。还有“javaw.exe”可以根据你想要做什么来考虑。 – 2010-08-03 02:35:44