如何启动第二个 Java 进程?
如何启动第二个独立于平台的 Java 进程?理想情况下,它应该与当前运行的 Java 版本相同。有什么有用的系统属性吗?
How can I start a second Java process platform independent? Ideally it should be the same Java version that currently running. Are there any helpful system properties?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
一般来说,这是不可能的。
@khachik 的答案中提供的方法不一定适用于 Java 的非 Sun 实现。
java 可执行文件不一定名为
java
,也不一定位于bin
子目录中。即使使用 Sun Java,在 Windows 上也有两个可执行文件;java
和javaw
。对于不同的 Java 实现,启动 JVM 的命令的命令选项是不同的。因此,
ProcessBuilder
步骤可能涉及不可移植的参数。虽然大多数 JVM 都采用了主要的 Sun
java
命令选项,但仍存在许多差异。例如:j9
和j9w
作为可执行文件名称。-XX
选项。rvm
作为可执行文件名称,并且仅支持 < Sun 的java
选项的 em>子集。ikvm
作为可执行文件名称。(注意:这些只是粗略阅读相应在线文档时突出的示例。)
It is not possible, in general.
The recipe provided in @khachik's answer will not necessarily work for a non Sun implementation of Java.
The java executable is not necessarily called
java
and doesn't necessarily live in thebin
subdirectory. Even with Sun Java, on Windows there are two executables;java
andjavaw
.The command options for the command that starts a JVM are different for different Java implementations. So the
ProcessBuilder
step may involve non-portable arguments.While most JVMs have adopted the primary Sun
java
command options, there are numerous differences. For example:j9
andj9w
as the executable names.-X
and-XX
options.rvm
as the executable name, and only supports a subset of Sun'sjava
options.ikvm
as the executable name.(Note: these are just examples that stand out in a cursory reading of the respective online documentation.)
您是否尝试过使用 Apache Commons 库?如果您还没有尝试过启动器项目。前一段时间这对我来说非常有用。
以下是他们网站上的项目描述:
Have you tried using the Apache Commons libs? If you haven't give the launcher project a try. It was quite useful for me some time ago.
Here's the project description from their site:
您可以使用
java.home
系统属性查找当前的JVM:然后使用
ProcessBuilder
(或Runtime.exec
)运行它。请注意,对于 JDK,
java.home
指向 JDK 中包含的 JRE 目录。You can use
java.home
system property to find the current JVM:and then run it using
ProcessBuilder
(orRuntime.exec
).Note that for JDK
java.home
points to the JRE directory included in JDK.