如何启动第二个Java进程?

Hor*_*ux7 8 java process runtime.exec

如何独立启动第二个Java进程平台?理想情况下,它应该是当前运行的相同Java版本.有什么有用的系统属性吗?

kha*_*hik 10

您可以使用java.home系统属性来查找当前的JVM:

String jvm = new java.io.File(new java.io.File(System.getProperty("java.home"),
                                               "bin"),
                              "java").getAbsolutePath();
Run Code Online (Sandbox Code Playgroud)

然后使用ProcessBuilder(或Runtime.exec)运行它.

请注意,JDK java.home指向JDK中包含的JRE目录.


Ste*_*n C 6

一般来说,这是不可能的.

@ khachik的答案中提供的配方不一定适用于非Sun的Java实现.

  • java可执行文件不一定被调用java,也不一定存在于bin子目录中.即使使用Sun Java,在Windows上也有两个可执行文件; javajavaw.

  • 对于不同的Java实现,启动JVM的命令的命令选项是不同的.因此,该ProcessBuilder步骤可能涉及非便携式参数.


虽然大多数JVM采用了主要的Sun java命令选项,但存在许多差异.例如:

(注意:这些只是粗略阅读相应在线文档的例子.)